Skip to main content
 首页 » 编程设计

python之Django 管理中不再显示绿色小按钮 "+"

2024年08月29日32lidabo

模型.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 的默认顺序。