我有一个带有类属性和几个子类的主类。我想为每个子类设置默认类别。例如:
class BaseAd(models.Model):
CATEGORY_CHOICES = ((1, 'Zeta'), (2, 'Sigma'), (3, 'Omega'),)
category = models.IntegerField(choices=CATEGORY_CHOICES)
...
class SigmaAd(BaseAd):
additional_prop = models.URLField()
category = models.IntegerField(default=2, editable=False)
当然,由于FieldError,我的示例无法正常运行。一个人如何“压倒”房产价值?或者它是我应该关注的管理员的功能?
答案 0 :(得分:5)
您必须在孩子的__init__()
方法中覆盖它。检查传递的关键字参数,以查看是否为category
赋值,如果未将其设置为2
,则将其传递给父级。
答案 1 :(得分:0)
我想出了这个:
class SigmaAdMan(admin.ModelAdmin):
exclude = ('category',)
def save_model(self, request, obj, form, change):
obj.category = 2
obj.save()
不确定它是否是最佳方法,但其功能