私は私の(ばかげているように見える)質問に対する答えを探しています。私はすでにスタックオーバーフローの投稿をいくつか見てきましたが、どれも役に立ちました:(
私の質問は、異なるモデルの 2 つのインスタンスを異なるモデルと比較する方法です。
これが私のケースです:
Product と Connector の 2 つのモデルがあります。まず、id(pk)、名前などを含めます。他には、id(pk)、productId(fk)、userId(fk) などがあります。
私の目標は、Connector db-table にある製品のみを製品 (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" と "connector.productId" をまったく異なるタイプと見なしていることです。1 つ目は「core.models.ProductModel」、2 つ目は「core.models.ConnectorModel」です。int() を使用して解析しようとしましたが、エラーが発生します。
この 2 つの値を比較して、オブジェクトを productListToDisplay 配列に追加するにはどうすればよいですか?
( django doc - Comparing objectsを見ましたが、この場合に役立つ情報はありません)