Python Django模型文件更新用于多对多查询

Python Django模型文件更新用于多对多查询,python,django,model,Python,Django,Model,全部,, 这是我的困境。我已经创建了Django models.py文件,其中包含两个类:CustTeamMembers和CustTeamName。这两个所谓的cust_成员之间存在多对多关系。这意味着一个团队成员可以在多个团队中,并且多个团队可以有相同的成员 我需要创建的是一种为每个团队选择一名成员作为团队领导者的方法。该团队成员需要来自客户成员列表 到目前为止,我一点运气都没有。任何帮助都将不胜感激 My models.py文件: from django.db import models

全部,, 这是我的困境。我已经创建了Django models.py文件,其中包含两个类:CustTeamMembers和CustTeamName。这两个所谓的cust_成员之间存在多对多关系。这意味着一个团队成员可以在多个团队中,并且多个团队可以有相同的成员

我需要创建的是一种为每个团队选择一名成员作为团队领导者的方法。该团队成员需要来自客户成员列表

到目前为止,我一点运气都没有。任何帮助都将不胜感激

My models.py文件:

from django.db import models

# This will hold the team members
class CustTeamMembers(models.Model):
    member_first_name = models.CharField(max_length = 100)
    member_last_name  = models.CharField(max_length = 100)
    member_email      = models.EmailField(unique=True)
    member_phone      = models.CharField(max_length = 25, blank=True)

    class Meta(object):
        ordering = ['member_last_name']

    def __str__(self):
        return self.member_first_name + ' ' + self.member_last_name

# This will hold the customer name
class CustTeamName(models.Model):
    cust_name    = models.CharField(max_length = 100)
    #cust_lead    = models.ForeignKey(CustTeamMembers, on_delete=models.CASCADE, blank=True)
    cust_members = models.ManyToManyField(CustTeamMembers, blank=True)
    cust_meet    = models.CharField(max_length = 40, blank=True)
    cust_status  = models.TextField(blank=True)

    def __str__(self):
        return self.cust_name

    def get_members(self):
        return ", ".join([str(p) for p in self.cust_members.all()]
~Ed

我建议使用和自定义中间表。像这样的

from django.db import models

# This will hold the team members
class CustTeamMembers(models.Model):
    member_first_name = models.CharField(max_length = 100)
    member_last_name  = models.CharField(max_length = 100)
    member_email      = models.EmailField(unique=True)
    member_phone      = models.CharField(max_length = 25, blank=True)

    class Meta(object):
        ordering = ['member_last_name']

    def __str__(self):
        return self.member_first_name + ' ' + self.member_last_name

# This will hold the customer name
class CustTeamName(models.Model):
    cust_name    = models.CharField(max_length = 100)
    #cust_lead    = models.ForeignKey(CustTeamMembers, on_delete=models.CASCADE, blank=True)
    cust_members = models.ManyToManyField(CustTeamMembers, blank=True, through="TeamsAndMembers")
    cust_meet    = models.CharField(max_length = 40, blank=True)
    cust_status  = models.TextField(blank=True)

    def __str__(self):
        return self.cust_name

    def get_members(self):
        return ", ".join([str(p) for p in self.cust_members.all()]

class TeamsAndMembers(models.Model):
    team = models.ForeignKey(CustTeamName, on_delete=models.CASCADE)
    member = models.ForeignKey(CustTeamMembers, on_delete=models.CASCADE)
    is_leader = models.BooleanField(default=False)