我有两个模型,我需要在一个查询中从两个模型中选择字段。

class Machines(model.Model):
    name = models.CharField(max_length=100)
    state = models.CharField(max_length=20)
    type = models.CharField(max_length=20)

class AssignedUsers(model.Model):
    machine_id = models.ForeignKey(Machines, null=True)
    user_email = models.CharField(max_length=100)


我想从结果集中的AssignedUsers中选择Machines和user_email中的所有字段。
填充此查询集的最合适方法是什么。这样可以帮助我如下查询结果集。

q = Q()
q = Q(name__icontains=searchword) | Q(user_email__icontains=searchword)
filtered_list = result_set.filter(q)

最佳答案

请注意distinct()方法。 Machines可以包含多个匹配的AssignedUsers,因此distinct()将从查询集中删除重复项。

machines = Machines.objects \
                   .distinct() \
                   .filter(Q(name__icontains=searchword) |
                           Q(assignedusers__user_email__icontains=searchword))

关于python - 在Django查询中使用外键选择子对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27816129/

10-12 03:49