thumbtackthief
thumbtackthief

Reputation: 6221

Reorder FK fields in Django, remain optional

I have a model (Application) tied to a foreign_key (Person) table. I was having trouble getting the Person-dropdown in the admin to sort by name instead of by key, and found this Reorder users in django auth as a solution. However, this made the fields mandatory and I can't figure out how to get them to stay optional.

app/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')

Upvotes: 0

Views: 46

Answers (1)

karthikr
karthikr

Reputation: 99660

Just add the required=False option on the form field

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

The thing is, if you override the default form widget that django's ModelForm would provide, you would have to explicitly specify required=False, since the default value is True

Upvotes: 1

Related Questions