gpt4 book ai didi

python - Django 管理模型继承可能吗?

转载 作者:太空狗 更新时间:2023-10-30 00:51:56 24 4
gpt4 key购买 nike

管理模型中是否可以继承?

例如,考虑以下内容,

文件: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()

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 是这样的,我不会收到任何错误,并且模型会出现在 admin 中。

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 )

我收到以下错误:

the Error

这是堆栈跟踪 Link

问题:该模型甚至没有出现在管理页面上

额外信息:

在 pinax 0.7.2、Ubuntu 11.04、python 2.7.1+ 上使用 django 1.2.5

最佳答案

也许现在回答你有点晚了,但我认为其他人也可能有类似的问题 - 就像我一样。

这是我的解决方案——我不确定它是否合适,但它对我有用,上面的其他人都可以做同样的事情(假设你想要一个多表继承(非抽象模型),就像我一样)

class SiteEntityAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['name']}),
]


class PhotoAdmin(SiteEntityAdmin):
fieldsets = [
('Photo details', {'fields': ['photo_url', 'description']}),
]
fieldsets.insert(0, SiteEntityAdmin.fieldsets[0])

关于python - Django 管理模型继承可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7376102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com