python - django 多对多比较

标签 python django many-to-many compare

有什么方法可以比较来自不同模型的两个 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/

相关文章:

Django ORM : Retrieving posts and latest comments without performing N+1 queries

grails - 我可以从关联(joinTable)中恢复引用丢失的数据吗

java - 多对多关系 : org. hibernate.MappingException : Could not determine type for: java. util.Set

mysql - 在 MySQL 中实现多对多关系的最佳方式

python - 为什么pygame会为我卡住?

python - 二进制补码符号扩展 python?

python - 使用Flask提供Matplotlib图像的成语之间有什么区别?

python - 正则表达式条件 : letters except 'crfl' at the end of the word or string are deleted?

python - 样式表在 Django 中不起作用

python - Django 模板无法获取上下文变量