比较不同模型的实例-Django REST框架



我只是在为我的(似乎很愚蠢的(问题寻找答案。我已经看了一些stackoverflow的帖子,但其中任何一个都很有帮助:(

我的问题是如何将不同模型的两个实例与不同模型进行比较?

这是我的案例:

我有两种型号:产品和连接器。首先包括id(pk(、名称等。另一个包括id(pk(、productId(fk(、userId(fk(等。

我的目标是准备视图,只列出连接器数据库表中的产品作为产品(fk(。

def list(self, request, *args, **kwargs):
# return only product user's watching
userId = self.request.user.id
connectorData = ConnectorModel.objects.filter(userId=userId)
allProducts = self.get_queryset()
productListToDisplay = []
for product in allProducts:
for connector in connectorData:
if product.id == connector.productId:
# HERE IS A PROBLEM 
productListToDisplay.append(product)
serializer = ProductSerializer(productListToDisplay, many=True)
return Response(serializer.data)

问题是Django认为"product.id"one_answers"connector.productId"是完全不同的类型。Firs是"core.models.ProductModel",其次是"core.models.ConnectorModel"。我试图用int((解析它,但它产生了错误。

如何比较这两个值以将对象添加到productListToDisplay数组?

(我看到django-doc-比较对象,但没有对这种情况有用的信息(

这应该能在中工作

connectorData = ConnectorModel.objects.filter(userId=userId, productId__in=all_products)
for connector in connectorData:
productListToDisplay.append(connector.product)

您可以这样做:

productListToDisplay = ConnectorModel.objects.filter(userId=userId, product__isnull=False).prefetch_related('product').values_list('product', flat=True)

最新更新