模型.py
class Lab(Model):
professor = ForeignKey('Author')
管理员.py
class LabAdmin(ModelAdmin):
form = LabForm
register(Lab, LabAdmin)
表单.py
class LabForm(ModelForm):
professor = ModelChoiceField(Author.objects.order_by('name'))
class Meta:
model = Lab
情况:我不得不为管理员使用自定义表单,因为教授下拉列表的条目没有按字母顺序排列。
问题:因此,下拉列表后不再有绿色的小“+”按钮,以便直接添加(在弹出窗口中)教授在实验室中添加管理表单。 Django 通常会自动创建绿色按钮和表单,但自从我使用自定义表单后,它就消失了。
请求:我想要在教授下拉列表后面这个绿色的小“+”按钮。
请您参考如下方法:
没有真正回答为什么缺少添加按钮,但无论如何:您不需要自定义表单来覆盖作者表单域的查询集,您只需要覆盖 ModelAdmin.formfield_for_foreignkey
class LabAdmin(ModelAdmin):
# form = LabForm
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "professor":
kwargs["queryset"] = Author.objects.order_by("name")
return super(MyModelAdmin, self).formfield_for_foreignkey(
db_field, request, **kwargs
)
或者您可以将“name”设置为 Author 的默认顺序。
