【发布时间】:2020-05-11 07:52:04
【问题描述】:
我有一个难题,我正在尝试选择具有多对多关系的相互关联的模型,具体取决于每个多对多字段上存在的模型的交集。我试图用 F() 来实现这一点,但没有成功,我认为我对 DB/ORM 的熟练程度不足以解决这个问题。
这是一个例子:
class Event(models.Model):
want_private = models.ManyToManyField('User')
class User(AbstractUser):
events = models.ManyToManyField(Event, related_name='users')
首先我想从一组用户中选择事件,例如以“a”开头的那些:
users_a = User.objects.filter(username_startswith="a")
所以查询集应该是:
Event.objects.filter(users=users_a)
当事情变得复杂时,我想:
-
排除用户同时在事件的
users字段、事件的want_private字段和users_a查询集中的事件。 -
包括用户同时在事件的
users字段中的事件,not在事件的want_private字段和@987654329 @查询集。
有没有人有办法解决这个问题?
非常感谢,
卡米尔。
【问题讨论】:
-
您能否澄清
User.events与Event.want_private的关系。对于您要存储的数据,用户是否有可能在Event.want_private但不 在Event.users? -
嗨@solarissmoke,确实我应该提到这一点,不,
User不可能在want_private中,但不在users中。然而相反的情况是可能的,用户可以在users,但不能在want_private。谢谢!
标签: django database django-models orm