在Django Admin中,可以通过自定义ModelAdmin类来实现在修改对象时使字段为只读,但在添加新对象时需要编辑的需求。以下是一种实现方式:
from django.contrib import admin
class MyModelAdmin(admin.ModelAdmin):
readonly_fields = ('field1', 'field2', 'field3') # 设置需要设为只读的字段
def get_readonly_fields(self, request, obj=None):
if obj: # 如果是修改对象
return self.readonly_fields + ('field4', 'field5') # 添加需要额外设为只读的字段
return self.readonly_fields # 添加新对象时,所有字段都设为只读
from django.contrib import admin
from .models import MyModel
admin.site.register(MyModel, MyModelAdmin)
在上述代码中,readonly_fields
属性用于设置需要设为只读的字段。get_readonly_fields
方法用于根据操作类型动态返回只读字段列表。如果是修改对象,则额外添加需要设为只读的字段;如果是添加新对象,则返回所有字段都设为只读。
这样,在Django Admin中,当你修改对象时,指定的字段将会是只读的,而当你添加新对象时,所有字段都将是只读的。
关于Django Admin的更多信息和用法,你可以参考腾讯云的Django Web框架文档:Django Web框架。
领取专属 10元无门槛券
手把手带您无忧上云