有一个模特:
class Combination(models.Model):
changed_by = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='combinations')
如何获取创建此类组合的所有用户的列表/查询集?
答案 0 :(得分:3)
user_instance.combinations.all()
可以为您提供相关用户的组合。
但是,如果要选择已创建至少一个Combination
实例的所有用户,则可以选择以下选项:
只需使用User.objects.filter(combination__isnull=False)
就像用户@PauloAlmeida在这个答案的评论中指出的那样(我不知道这种方式,即使它在docs就在那里,所以我也学到了今天的新事物。)
您可以使用效率较低但更简单的python代码来迭代用户:
user_list = []
for u in User.objects.all():
if u.combinations.exists():
# add users that have at least one combination
user_list.append(u)
您可以使用效率较低但更简单的python代码来迭代组合:
user_set = set()
for c in Combination.objects.filter(changed_by__isnull=False):
# will have no effect if user is already present in user_set
user_set.add(c.changed_by)