Django Admin: How to display value of fields with list_display from two models which are in oneToOne relation?

前端 未结 2 604
南笙
南笙 2021-02-05 23:28

I belive that the answer to my problem is simple, but I can\'t find it anywhere. Here is my predicament. I have two models: Member and MemberDetail, which are in oneToOne relati

相关标签:
2条回答
  • 2021-02-06 00:11

    You should just be able to do 'member_detail__email', etc. in list_display

    Since it's a 1-1 you should have a backref, and associated fields are referenced using two underscores.

    0 讨论(0)
  • 2021-02-06 00:28

    Finally!!! I solved it. As I thought it was simple, but I had to do it other way around and with multi table inheritance:

    models.py
    class Member(models.Model):
        ID = models.AutoField(primary_key=True)
        FIRST_NAME = models.CharField('First name', max_length=50)
        LAST_NAME = models.CharField('Last name', max_length=50)
    
    # Using multi table inheritance - automaticly creates one to one field
    class MemberDetail(Member):
        DATE_OF_BIRTH = models.DateField('Date of birth')
        EMAIL = models.EmailField('E-mail')
        PHONE = models.CharField('Phone', max_length=15)
    

    Now for admin.py

    admin.py
    class MemberDetailAdmin(admin.ModelAdmin):
        list_display = ("FIRST_NAME", "LAST_NAME", "DATE_OF_BIRTH", "EMAIL", "PHONE")
    
    admin.site.register(MemberDetail, MemberDetailAdmin)
    

    That's it. Maybe, there is other solutions, but this is good for me.

    0 讨论(0)
提交回复
热议问题