答案 0 :(得分:1)
您可以使用Django的管理员选项来允许您查看/编辑/删除哪些模型字段:ModelAdmin Options
我相信你可以使用list_editable字段:
class MyModelAdmin(OrderedModelAdmin):
list_display = ('foo_editable', 'bar_editable', 'publisher')
list_editable = ['foo_editable', 'bar_editable',]
def get_readonly_fields(self, request, obj=None):
if obj:
# obj is not None, so this is an edit
return ['publisher',] # Return a list or tuple of readonly fields' names
else:
# This is an addition
return []
admin.site.register(MyModel, MyModelAdmin)
答案 1 :(得分:1)
我遇到了类似的问题——相关字段的下拉列表有太多的值,导致管理编辑页面加载异常缓慢(有时会导致超时)。但我仍然需要能够对外键字段进行操作。
您既可以禁用下拉菜单,也可以使用模型表单删除编辑按钮。
can_change_related = False
。这将删除编辑按钮。代码如下:
class ModelA(models.Model):
pass
class ModelB(models.Model):
a_ref = models.ForeignKey(ModelA)
class ModelBAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['a_ref'].disabled = True
self.fields['a_ref'].widget.can_change_related = False
class Meta:
model = ModelB
fields = '__all__'
class ModelBAdmin(admin.ModelAdmin):
form = ModelBAdminForm
您还可以使用 can_create_related = False
而且,您可以通过使用 self.fields['a_ref'].queryset = ModelB.obejcts.filter(...)