Django Admin:如何在内联中显示模型上定义的属性?

时间:2010-08-09 15:49:39

标签: django django-models django-admin

这是此question的后续行动。如何在父级的内联中显示在子模型上定义的属性?为了说明,我有这个模型:

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True, primary_key=True, related_name='profile')
    ...
    @property
    def age(self):
        if self.birthday is None:
            return None

        td = datetime.date.today() - self.birthday
        return td.days / 365

问题是:如何在用户的内联中显示“年龄”?这就是我所拥有的:

class UserProfileInline(admin.StackedInline):
    model = UserProfile
    fk_name = 'user'
    max_num = 1
    fieldsets = [
        ('Demographics', {'fields': ['birthday', 'age']}),
    ]

我尝试过这样的一些事情,包括'age()',为Inline定义'get_age'getter等等。它们导致了这个错误的某些版本:

ImproperlyConfigured: 'UserProfileInline.fieldsets[1][1]['fields']' refers to field 'age' that is missing from the form.

1 个答案:

答案 0 :(得分:35)

也将字段添加到readonly_fields元组。

注意这只适用于Django 1.2 +。