我模型上的过滤器函数返回我 <QuerySet []>
Posted
技术标签:
【中文标题】我模型上的过滤器函数返回我 <QuerySet []>【英文标题】:The filter function on my model return me <QuerySet []> 【发布时间】:2021-09-01 19:04:48 【问题描述】:我的 models.py 中有这个模型
我正在尝试发送我的购买详细信息并将其作为JSON
退回,但是
myModel.objects.filter
函数返回一个 void QuerySet 对象
models.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)
【问题讨论】:
我不知道它是否由于 id_purchase 参数是 ForeingKey 【参考方案1】:我认为您的过滤器查询应该是这样的:
Purchase_detail.objects.filter(id_purchase__id=id))
这是因为ForeignKey
在 Django ORM 中的工作方式。查询中的id_purchase
是Purchase
对象。
我认为重命名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))
【讨论】:
以上是关于我模型上的过滤器函数返回我 <QuerySet []>的主要内容,如果未能解决你的问题,请参考以下文章
通过相关模型上的过滤器对 list_display 字段进行排序