Opened 17 years ago
Closed 17 years ago
#7713 closed (duplicate)
newforms-admin has issues with model inheritance
| Reported by: | zobbo | Owned by: | nobody |
|---|---|---|---|
| Component: | contrib.admin | Version: | newforms-admin |
| Severity: | Keywords: | newforms-admin model inheritance | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
You'll need to apply the patch in #7588 to test this, otherwise you'll just get a python traceback
Take the following class:
from django.db import models
# Create your models here.
from django.db import models
import datetime
class BaseModel(models.Model):
"""Abstract class used for some common fields"""
created_at = models.DateTimeField(blank=True, default=datetime.datetime.now)
modified_at = models.DateTimeField(blank=True, default=datetime.datetime.now)
class Meta:
abstract = True
class Item(BaseModel):
"""Everything in the system - multi table inheritance"""
code = models.CharField(blank=True, max_length=15) # A shortname
description = models.CharField(blank=True, max_length=50)
class ValuedItem(Item):
"""This is an abstract base class for stuff with a value"""
value = models.FloatField(default=0.0)
class Meta:
abstract = True
class PlayableItem(ValuedItem):
"""Inheriting from our abstract ValuedItem class"""
funfactor = models.IntegerField(blank=True, null=True) # Amount of fun
class Admin:
pass
/* The admin stuff, normally in admin.py */
from django.contrib import admin
from django.contrib.admin.sites import AlreadyRegistered
class PlayableItemAdmin(admin.ModelAdmin) :
model = PlayableItem
list_display = ('code','description',)
list_filter = ('code',)
search_fields=('code','description')
try:
admin.site.register(PlayableItem, PlayableItemAdmin)
except AlreadyRegistered:
pass
Now try and add a playable item through the admin interface. By default the item ptr appears and won't let you save the record until it's been filled in. And of course, you can't fill it in, because the item it needs to point to is not saved yet. I'd assume these ptr fields should be automatically hidden and filled in by the admin mechanism. Attached graphic of the form behaviour.
Admin interface behaviour with model inheritance