2013-04-22 20 views
2

models.py小绿 “+” 按钮将不再显示在Django管理

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 

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

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

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

+2

作者模型是否在你的admin.py中启用? – 2013-04-22 07:23:32

+0

是的。在使用自定义表单之前,它工作正常,但是由于我自己创建了“+”按钮,所以不会再出现。 – user2282405 2013-04-22 07:32:23

回答

3

并没有真正回答为什么添加按钮丢失但无论如何:你不需要自定义窗体覆盖笔者formfield的查询集,你就必须重写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的默认排序。

+0

它工作正常,谢谢! – user2282405 2013-04-22 08:18:17