首页 > 解决方案 > 从 Viewset 调用时无法获取查询集的代表

问题描述

我正在尝试调用模型的查询集以添加到我的序列化程序中,objects.all()但调试器说Unable to set repr for <class 'django.db.models.query.Queryset'>

这是我的观点

class TransactionReceiptViewSet(viewsets.GenericViewSet,
                                viewsets.mixins.RetrieveModelMixin,
                                viewsets.mixins.ListModelMixin):
    authentication_classes = (TokenAuthentication,)
    permission_classes = (IsAuthenticated,)
    serializer_class = base_serializers.TransactionReceiptSerializer
    queryset = models.TransactionReceipt.objects.all()

    def get_queryset(self):
        user = self.request.user
        return models.TransactionReceipt.objects.filter(user_profile=user)

    def retrieve(self, request, *args, **kwargs):
        response = super(TransactionReceiptViewSet, self).retrieve(request, *args, **kwargs)
        receipt = self.get_object()
        serializer = self.get_serializer(receipt)

        product_qs = models.ProductReceipt.objects.all()
        products_data = base_serializers.ProductReceiptSerializer(
            product_qs, many=True)
        serializer.data['products'] = products_data
        return Response(serializer.data)

这是我试图要求的模型

class ProductReceipt(models.Model):
    id = models.AutoField(primary_key=True)
    amount = models.IntegerField(default=1)
    product = models.ForeignKey(Product, on_delete=models.DO_NOTHING, default=None)
    created_date = models.DateTimeField('Date of purchase', auto_now=True)
    transaction_receipt = models.ForeignKey(TransactionReceipt, on_delete=models.CASCADE)
    price = models.IntegerField(default=0)

    def __str__(self):
        return "object created"

    def __init__(self):
        super().__init__()
        self.product = Product()
        self.transaction_receipt = TransactionReceipt()

    def save(self, **kwargs):
        self.amount = 1
        self.created_date = datetime.now()
        self.price = self.product.price_tag.price

当我调试 API 时,它说Unable to set repr for <class 'django.db.models.query.Queryset'>在 product_qs 中并没有返回任何内容

图片

编辑: 我认为模型必须对此做些什么。我试图ModelViewSet为 ProductReceipt 创建一个并且效果很好。但是当我尝试手动进行查询时。它以某种方式破坏了到外键的映射???什么都不返回?

标签: djangodjango-views

解决方案


原来产品字段未设置为 null=True。而且我有该字段的旧数据指向任何内容。尝试从数据库查询时,它会中断。简而言之,我没有正确迁移。


推荐阅读