Answers:
使用只读字段。像这样(对于django> = 1.2):
class MyModelAdmin(admin.ModelAdmin):
readonly_fields=('first',)
fields
,管理员崩溃了,但是readonly_fields
直到将其添加到admin中时,它才出现。
更新资料
如果您想让该字段在Admin中保持可编辑状态,而在其他任何地方都不可编辑,则该解决方案很有用。如果您希望整个字段保持不可编辑状态,那么@Till Backhaus的答案是更好的选择。
原始答案
一种方法是ModelForm
在admin中使用自定义。此表单可以覆盖必填字段以使其可编辑。因此,您可以保留editable=False
除Admin之外的所有其他位置。例如(经Django 1.2.3测试)
# 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)