Django的pipe理员:如何在模型中显示标记为editable = False的字段?

即使模型中某个字段被标记为'editable=False' ,我也希望pipe理页面显示该字段。 目前它完全隐藏了这个领域。这怎么能实现呢?

使用只读字段 。 像这样(对于Django> = 1.2):

 class MyModelAdmin(admin.ModelAdmin): readonly_fields=('first',) 

更新

如果您希望在Admin中保持该字段可编辑,但在其他地方不可编辑,则此解决scheme非常有用。 如果你想保持整个字段不可编辑那么@Till Backhaus的答案是更好的select。

原始答复

一种方法是在pipe理中使用自定义的ModelForm 。 此表单可以覆盖必填字段以使其可编辑。 因此,你保留editable=False其他地方,但pipe理员。 例如(用Django 1.2.3testing)

 # models.py class FooModel(models.Model): first = models.CharField(max_length = 255, editable = False) second = models.CharField(max_length = 255) def __unicode__(self): return "{0} {1}".format(self.first, self.second) # admin.py class CustomFooForm(forms.ModelForm): first = forms.CharField() class Meta: model = FooModel fields = ('second',) class FooAdmin(admin.ModelAdmin): form = CustomFooForm admin.site.register(FooModel, FooAdmin)