簡體   English   中英

我的過濾器function model 還我<queryset []></queryset>

[英]The filter function on my model return me <QuerySet []>

我的 models.py 中有這個模型

我正在嘗試發送我的購買詳細信息並將其作為JSON返回,但是myModel.objects.filter function 返回一個無效的 QuerySet 對象

模型.py

class Purchase(models.Model):
    total = models.IntegerField()
    date = models.DateTimeField(auto_now=True)
    user_phone = models.CharField(max_length=50)
    id_user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
    )

class Purchase_detail(models.Model):
    id_product = models.ForeignKey(Product, on_delete=models.CASCADE)
    id_purchase = models.ForeignKey(Purchase, on_delete=models.CASCADE)
    quantity= models.IntegerField()
    price = models.IntegerField()

但是當嘗試執行Purchase_detail.objets.filter不起作用時

def see_purchase_detail(request, id):
    if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
        purchase_detail = json.loads(serializers.serialize(
            'json',
            Purchase_detail.objects.filter(id_purchase=id)
        ))
        print(purchase_detail, Purchase_detail.objects.filter(id_purchase=id))
        return JsonResponse({'details': purchase_detail}, safe=False)
    else:
        return JsonResponse({None}, safe=False)

我認為您的過濾器查詢應該是這樣的:

Purchase_detail.objects.filter(id_purchase__id=id))

這是因為ForeignKey在 Django id_purchase中的工作方式。查詢中的 id_purchase 是Purchase object。

我認為重命名ForeignKey字段會更好。

class Purchase(models.Model):
    total = models.IntegerField()
    date = models.DateTimeField(auto_now=True)
    user_phone = models.CharField(max_length=50)
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
    )

class Purchase_detail(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    purchase = models.ForeignKey(Purchase, on_delete=models.CASCADE)
    quantity= models.IntegerField()
    price = models.IntegerField()

現在過濾器應該是這樣的:

Purchase_detail.objects.filter(purchase__id=id))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM