在django查询中使用外键选择子对象

时间:2015-01-07 09:25:23

标签: python mysql django foreign-key-relationship

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

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的user_email。 填充此查询集的最合适方法是什么。这样可以帮助我查询结果集如下。

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

1 个答案:

答案 0 :(得分:0)

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

machines = Machines.objects \
                   .distinct() \
                   .filter(Q(name__icontains=searchword) |
                           Q(assignedusers__user_email__icontains=searchword))
相关问题