简体   繁体   中英

AttributeError: 'int' object has no attribute 'pk'

having an issue having 2 foreign keys to the same model, when I post the data I got the eror "AttributeError: 'int' object has no attribute 'pk'" and many more.

Model

class OrderProductsModel(models.Model):
    fk_user = models.ForeignKey(CustomUser, null=True, blank=True, on_delete=models.SET_NULL, related_name="fk_user")
    fk_seller = models.ForeignKey(CustomUser, null=True, blank=True, on_delete=models.SET_NULL, related_name="fk_seller")

Views

class MyView(APIView):

    def get_seller(self, request, product):
        product_order = ProductModel.objects.get(id=product)
        print("product = ",type(product_order)) = <class 'products.models.ProductModel'>
        print("ID User owner of the product==> ", product_order.fk_user_id.id) ==> 2
        seller_order = CustomUser.objects.get(id=product_order.fk_user_id.id)
        return seller_order

    def post(self, request):
        if request.method == "POST":
            items = request.data
            for k in range(len(items)):
                items[k]["fk_user"] = request.user.id (Works fine)
                items[k]["fk_seller"] = self.get_seller(request, items[k]["fk_product"]) (Not works)

Serializer

from rest_framework import serializers
from order_products.models import OrderProductsModel

class OrderProductsSerializer(serializers.ModelSerializer):

class Meta:
    model = OrderProductsModel
    fields = "__all__"

Error

File "C:\Foo\Baar\etc\env\lib\site-packages\rest_framework\relations.py", line 273, in to_representation
return value.pk
AttributeError: 'int' object has no attribute 'pk'

The error is in the query, in get_seller function, this one works

def get_seller(self, request, product):
    # Get the product
    product_order = ProductModel.objects.get(id=product)
    # Access to the foreign key in the product model field 
    seller_order = product_order.fk_user_id_id
    return seller_order

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM