Django管理后台主键应为只读,但在新建条目时应可见
你好,我想在查看或修改记录时让主键可见。但是在Django的管理页面中,它不应该是可编辑的。因此,我尝试使用只读字段。不过,当我设置为只读时,我在添加新记录时无法输入主键的值。
这是我的admin.py文件
class EmployeeAdmin(admin.ModelAdmin):
search_fields = ['name']
list_display = ('name','id','dob','bill','mobile','email')
list_filter = ('bill','proj')
readonly_fields=('id',)
我的model.py文件是,
class Employee(models.Model):
id = models.IntegerField(max_length = 6,primary_key=True)
name = models.CharField(max_length = 100)
dob = models.DateField(verbose_name='Date Of Birth')
doj = models.DateField(verbose_name='Date Of Joining')
1 个回答
1
你在 admin.py 文件中的类应该像下面这样。请使用 get_readonly_fields
来实现这个功能。
class EmployeeAdmin(admin.ModelAdmin):
search_fields = ['name']
list_display = ('name','id','dob','bill','mobile','email')
list_filter = ('bill','proj')
# readonly_fields=('id',)
def get_readonly_fields(self, request, obj=None):
if obj: # editing an existing object
return self.readonly_fields + ('id',)
return self.readonly_fields