我有两个模型,我需要在一个查询中从两个模型中选择字段。
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)
答案 0 :(得分:0)
请注意distinct()
方法。 Machines
可以包含多个匹配AssignedUsers
,因此distinct()
将从查询集中删除重复项。
machines = Machines.objects \
.distinct() \
.filter(Q(name__icontains=searchword) |
Q(assignedusers__user_email__icontains=searchword))