python - 多对多查询的 Django 模型文件更新
问题描述
所有,这是我的困境。我创建了 Django models.py 文件,其中包含 2 个类,CustTeamMembers 和 CustTeamName。两者之间存在多对多关系,称为 cust_members。这意味着一个团队成员可以在多个团队中,并且多个团队可以拥有相同的成员。
我需要创建的是一种为每个团队选择一个成员作为团队领导者的方法。该团队成员需要来自 cust_members 列表。
到目前为止,我还没有运气。任何帮助,将不胜感激。
我的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()]
〜埃德
解决方案
我会建议使用并自定义中间表。像这样的东西。
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)
推荐阅读
- java - 如何在 url 中查找子路径
- php - 如果满足单个条件,php将数组元素移到第一个
- python - 如果在 Windows 7 上同时运行,两个 python 应用程序会在一段时间后崩溃
- firebase - 创建 24 小时后删除 Firestore 文档
- c++ - 像 c# 中的 ConcurrentBag 一样,cpp(MFC) 中有哪些可用的选项?
- php - 如何对这个动态创建的表中的每一列求和,如 excel
- jenkins - Github jenkins webhook 集成失败
- ruby - Clojure 相当于 ruby 的#methods 方法?
- reactjs - React TypeScript:将 base64 字符串保存到 useState
- c# - 将 JSON 反序列化为 C# 对象