有什么方法可以比较来自不同模型的两个 ManyToMany 关系?
我有一个共同的模型 Days 和另外两个模型:
- Ticket(Ticket 与 Days 是 m2m 关系)
- 支票(支票与天数是m2m关系)
如果看起来不太漂亮或可读性差,我可以用两个。
最佳答案
如果我没看错您的问题,您可以通过在 Ticket 和 Check 模型的 m2m 声明中定义相关名称然后比较查询集来实现您的要求
例子:
class Day(models.Model):
day = models.DateField()
class Ticket(models.Model):
ticket_name = models.CharField()
days = models.ManyToMany(Day, related_name="tickets")
class Check(models.Model):
check_name = models.CharField()
days = models.ManyToMany(Day, related_name="checks")
现在要查找指定日期的所有门票和支票以进行比较,您可以这样做:
date = datetime.date(day=1, month=1, year=2000)
day = Day.objects.select_related().get(day=date)
ts = day.tickets
cs = day.checks
如果您想要与 ticket_name = ticket 的票证相关的日期的所有支票:
checks_for_ticket = Check.objects.filter(days__tickets__ticket_name="tickets")
如果您想要与 Check with check_name = check 相关的日期的所有门票:
tickets_for_check = Ticket.objects.filter(days__checks__check_name="check")
关于python - django 多对多比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5206254/