0

モデル (アプリケーション) がforeign_key (Person) テーブルに関連付けられています。管理者の Person-dropdown をキーではなく名前でソートするのに問題があり、解決策としてこのReorder users in django authを見つけました。ただし、これによりフィールドが必須になり、オプションのままにする方法がわかりません。

アプリ/models.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

admin.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'))

required=False問題は、django の ModelForm が提供するデフォルトのフォーム ウィジェットをオーバーライドする場合、デフォルト値が であるため、明示的に指定する必要があることです。True

于 2013-10-21T16:48:15.570 に答える