模型继承和属性默认值

时间:2010-05-04 17:45:33

标签: django django-models

我有一个带有类属性和几个子类的主类。我想为每个子类设置默认类别。例如:

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,我的示例无法正常运行。一个人如何“压倒”房产价值?或者它是我应该关注的管理员的功能?

2 个答案:

答案 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()

不确定它是否是最佳方法,但其功能