【问题标题】:Django Model FilterDjango 模型过滤器
【发布时间】:2012-03-13 03:29:15
【问题描述】:

我在过去的几个小时里一直在查看 Django Docs 和类似的问题,但我仍然不清楚如何解决这个问题......

本质上,我想访问与某个组相关的电子邮件地址列表,因此我可以向属于该组的这些客户(名为 group_one、group_two 等)发送电子邮件

class Group(models.Model):
  name = models.CharField(primary_key=True)
  mailing_list = models.ManyToManyField("Customer", null=True)  

class Customer(models.Model):
  name = models.CharField()
  email = models.EmailField(primary_key=True)

我试过了

group_mail_list = Group.objects.filter(name=group_two)

这会返回 group_two 的查询对象,但是当我尝试执行 __contains 过滤器时出现错误:

TypeError: Related Field has invalid lookup: contains

有人帮帮我吗?不知道是不是因为是多对多的关系?

提前致谢:)

【问题讨论】:

  • group_mail_list = Group.objects.filter(name='group_two')
  • 您没有提供 __contains 位的代码。仅适用于另一个有效的示例
  • 返回一个空列表。那么是查看 Group 对象中的 mailing_list 字段,然后查看 Customer 中的名称吗? Customer 对象中的名称是客户名称,而不是他们“所属”的组名称。我想拖动属于 mailing_list 组 2 的所有电子邮件地址。希望澄清它?

标签: database django model typeerror


【解决方案1】:

那么你真正想要的是Customers。从表面上看,这似乎违反直觉,因为您想要Group 的电子邮件,但该字段位于Customer 而不是Group

Customer.objects.filter(group__name='group_two').values_list('email')

【讨论】:

  • 宾果游戏!谢谢,我不会这么想的。如果可以的话,还有一个问题 - 返回的列表类似于 [(u'aname@domain.com',)]。有没有一种简单的方法来消除 unicode 位?我想这就是你?
  • u 不是字符串的一部分。这只是字符串是 unicode 的信号。 Django 存储在数据库中的每个字符串都是 unicode。 Unicode 很好——你想要的。如果您担心的话,它实际上不会在电子邮件的 TO 字段中出现u 或类似的东西。
  • 好的,非常感谢,如果没有你的帮助,你会被困在这几天
猜你喜欢
  • 2023-03-10
  • 2017-06-22
  • 2013-03-16
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多