Возможно ли наследование в моделях администратора?
Как например, рассмотрим следующее,
Файл: models.py
class AbstractModel ( models.Model ):
# Meta Information common to all classes
author = models.ForeignKey(auth.models.User , null = False ,related_name="%(class)s_related_author" ) # The user who created
editor = models.ForeignKey(auth.models.User , null = True,related_name="%(class)s_related_editor" ) # The user who last edited
created_at = models.DateTimeField(auto_now_add = True) # Create Time
edited_at = models.DateTimeField(auto_now = True) # Modify Time
class Meta:
abstract = True
class Topic( AbstractModel ):
name = models.CharField(max_length = NameMaxLength , unique = True)
version_number = models.IntegerField(default = 0)
update_frequency = models.IntegerField()
AПодобное наследование не дает правильного результата при использовании в ModelAdmin
Файл: admin.py
class Abstract_Admin_Model( admin.ModelAdmin ):
fields = ('author' , 'editor' , 'created_at' , 'edited_at')
readonly_fields = ('author' , 'editor' , 'created_at' , 'edited_at')
def save_model(self, request, obj, form, change):
if not change :
obj.author = request.user
else :
obj.editor = request.user
obj.save()
class Admin_Topic( Abstract_Admin_Model ):
fields += ('name' , 'version_number' , 'update_frequency')
admin.site.register( Topic , Admin_Topic )
РЕДАКТИРОВАТЬ :
Я изменил вышеупомянутую модель на основе предложений,
Если admin.py
такой, я не получаю никакой ошибки, и модель появляется у администратора.
class AbstractAdminModel( admin.ModelAdmin ):
pass#fields = ['author' , 'editor' , 'created_at' , 'edited_at']
class Admin_Topic( AbstractAdminModel ):
pass
admin.site.register( Topic , Admin_Topic )
Но если я изменю его следующим образом
class AbstractAdminModel( admin.ModelAdmin ):
fields = ['author' , 'editor' , 'created_at' , 'edited_at']
class Admin_Topic( AbstractAdminModel ):
pass
admin.site.register( Topic , Admin_Topic )
Я получу следующую ошибку:
Вот трассировка стека Ссылка
Проблема: Модель даже не отображается на странице администратора
Дополнительная информация:
используя django 1.2.5 с pinax 0.7.2, Ubuntu 11.04, python 2.7.1 +