django admin foreign key field data add

Viewed 27407

In add form for any app in django admin, for foreign key fields of that model.. comes a dropdown list with add button(which opens in a pop-up). Can we have a form where we can add the foreign key model fields in the same form.

For e.g

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    contact = models.ForeignKey(Contact, blank=True, null=True)

For user and contact fields a dropdown with add button is present in admin add form.Can we have all fields of user and contact in same page??

3 Answers

the easiest approach would be something like.

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    contact = models.ForeignKey(Contact, blank=True, null=True)


# Then in the admin create the custom admin view
from .models import Contact

class CustomAdminUserProfile(admin.ModelAdmin):
    list_display = ['contact', 'get_contact_additional_field']

    def get_contact_additional_field(self, obj):
        queryset = Contact.objects.filter(name=obj.name)[0]
        additional_field = queryset.additional_field
        return additional_field

#Then you register
admin.site.register(Contact, CustomAdminUserProfile)
        
Related