我有一个模型'状态'与ManyToManyField'组'。每个组都有一个ManyToManyField'用户'。我想让所有的用户都有一定的地位。我知道我可以对组进行for循环,并将所有用户添加到列表中。但是组中的用户可能会重叠,因此我必须检查用户是否已经在组中。有没有更有效的方式来使用查询做到这一点?有没有办法在Django中使用查询来模拟foreach?
编辑:状态有一个组列表。每个组都有一个用户列表。我想从所有组中获得一个用户的列表。
模式
class Status(geomodels.Model):
class Meta:
ordering = ['-date']
def __unicode__(self):
username = self.user.user.username
return "{0} - {1}".format(username, self.text)
user = geomodels.ForeignKey(UserProfile, related_name='statuses')
date = geomodels.DateTimeField(auto_now=True, db_index=True)
groups = geomodels.ManyToManyField(Group, related_name='receivedStatuses', null=True, blank=True)
class Group(models.Model):
def __unicode__(self):
return self.name + " - " + self.user.user.username
name = models.CharField(max_length=64, db_index=True)
members = models.ManyToManyField(UserProfile, related_name='groupsIn')
user = models.ForeignKey(UserProfile, related_name='groups')
你能告诉我们你的模型吗? – Rohan
根据您的模型代码,您希望成员而不是用户处于请求状态的组,对吧?由于每个组只能拥有一个使用此代码的用户,我假设您正在尝试遵循m2m关系。 –
是的,这是正确的。我想汇总所有组的成员。 –