0

我有一个模型(应用程序)绑定到一个外键(人)表。我无法让管理员中的 Person-dropdown 按名称而不是按键排序,并在 django auth 中找到了 Reorder users作为解决方案。但是,这使得这些字段是强制性的,我不知道如何让它们保持可选状态。

应用程序/模型.py

class Person(models.Model):

       Full_Name = models.CharField(max_length=200)
       def __unicode__(self):
                return self.Full_Name

class Application(models.Model):
    Name = models.CharField(max_length=100)
    Primary_Contact = models.ForeignKey(Person,blank=True,null=True,related_name='appprimarycontact')

    def __unicode__(self):
        return self.Name

管理员.py

class OwnerAdminForm(forms.ModelForm):
    Primary_Contact = forms.ModelChoiceField(queryset=Person.objects.order_by('Full_Name'),)
    class Meta:
        model = Application

class ApplicationAdmin(admin.ModelAdmin):
    form = OwnerAdminForm
    list_display = ('Name','Primary Contact')
4

1 回答 1

1

只需required=False在表单字段上添加选项

forms.ModelChoiceField(required=False, queryset=Person.objects.order_by('Full_Name'))

问题是,如果您覆盖 django 的 ModelForm 将提供的默认表单小部件,则必须显式指定required=False,因为默认值为True

于 2013-10-21T16:48:15.570 回答