我有两个模型,我需要在一个查询中从两个模型中选择字段。
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/