【问题标题】:Little green "+" button no longer displayed in the Django adminDjango admin 中不再显示绿色的小“+”按钮
【发布时间】:2013-04-22 06:30:26
【问题描述】:

models.py

class Lab(Model):
    professor = ForeignKey('Author')

admin.py

class LabAdmin(ModelAdmin):
    form = LabForm

register(Lab, LabAdmin)

forms.py

class LabForm(ModelForm):
    professor = ModelChoiceField(Author.objects.order_by('name'))

    class Meta:
        model = Lab

情况:我不得不为管理员使用自定义表单,因为教授下拉列表的条目没有按字母顺序排列。

问题: 正因为如此,下拉列表后面不再有绿色的小“+”按钮,以便在蜂鸣时直接添加(在弹出窗口中)教授在实验室中添加管理表单。 Django 通常会自动创建绿色按钮和表单,但由于我使用的是自定义表单,它就消失了。

请求:我想要在教授下拉列表后面这个绿色的小“+”按钮。

【问题讨论】:

  • 你的 admin.py 中是否启用了 Author 模型?
  • 是的。在我使用自定义表单之前它工作得很好,但是因为我自己制作了“+”按钮不再出现。

标签: python django admin


【解决方案1】:

并没有真正回答为什么缺少添加按钮,但无论如何:您不需要自定义表单来覆盖作者表单字段的查询集,您只需覆盖 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
            )

或者您可以将“名称”设为Author 的默认排序。

【讨论】:

    猜你喜欢
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多