[英]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.