代码之家  ›  专栏  ›  技术社区  ›  alias51

如何通过模型显示多个字段的值

  •  0
  • alias51  · 技术社区  · 6 年前

    ManyToMany through 关系

    from django.db import models
    
    class Person(models.Model):
        name = models.CharField(max_length=50)
    
    class Group(models.Model):
        name = models.CharField(max_length=128)
        members = models.ManyToManyField(
            Person,
            through='Membership',
            through_fields=('group', 'person'),
        )
    
    class Membership(models.Model):
        group = models.ForeignKey(Group, on_delete=models.CASCADE)
        person = models.ForeignKey(Person, on_delete=models.CASCADE)
        inviter = models.ForeignKey(
            Person,
            on_delete=models.CASCADE,
            related_name="membership_invites",
        )
        invite_reason = models.CharField(max_length=64)
    

    当显示 DetailView 对于 Group 打印 person.name

     {% for person in group.person.all %}
     {{ person.name }}
     {% endfor %}
    

    如何将引用添加到打印 invite_reason 在这个 for

    0 回复  |  直到 6 年前
        1
  •  1
  •   Hasan    6 年前

    这个团体有很多成员。会员有一个团体和一个人以及邀请理由。因此,要获取组中特定人员的邀请原因,您需要从成员模型中访问它。

    您可以执行以下操作:

      {% for membership in group.memebership_set.select_related('person') %}
               Person Name: {{ membership.person.name }}
               Invite Reason: {{ membership.invite_reason }} 
      {% endfor %}
    
    推荐文章