使用 Django 中的其他对象过滤对象
Filtering objects using other objects in Django
在我的 Django 应用程序中,用户提供了一个与另一个对象的字段匹配的唯一产品名称,然后在列表中显示第二个对象(用户看到的)。所以对象的显示条件看起来像这样
obj1.name == obj2.name
一个对象极其简单但是如何用它得到queryset
(其中对象1的字段等于对象2的字段)?
我想要得到的效果示例:
Obj1.objects.all() = ('AS2', 'AS9', 'AD5', 'AG1')
Obj2.objects.all() = ('DD1', 'AS2', 'AS9', 'AP33', 'AD5', 'AG1', 'KQ1', 'LG4')
query1 = Obj1.objects.all()
query2 = obj2.objects.filter(name=???)
#and query2 return all objects product which name=name well ('AS2', 'AS9', 'AD5', 'AG1') but from Obj2
您可以尝试类似的方法:
obj_1_names = Obj1.objects.values_list('name', flat=True)
query = Obj2.objects.filter(name__in=obj_1_names)
在我的 Django 应用程序中,用户提供了一个与另一个对象的字段匹配的唯一产品名称,然后在列表中显示第二个对象(用户看到的)。所以对象的显示条件看起来像这样
obj1.name == obj2.name
一个对象极其简单但是如何用它得到queryset
(其中对象1的字段等于对象2的字段)?
我想要得到的效果示例:
Obj1.objects.all() = ('AS2', 'AS9', 'AD5', 'AG1')
Obj2.objects.all() = ('DD1', 'AS2', 'AS9', 'AP33', 'AD5', 'AG1', 'KQ1', 'LG4')
query1 = Obj1.objects.all()
query2 = obj2.objects.filter(name=???)
#and query2 return all objects product which name=name well ('AS2', 'AS9', 'AD5', 'AG1') but from Obj2
您可以尝试类似的方法:
obj_1_names = Obj1.objects.values_list('name', flat=True)
query = Obj2.objects.filter(name__in=obj_1_names)