精确查找的QuerySet值必须使用Django中的切片错误限制为一个结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精确查找的QuerySet值必须使用Django中的切片错误限制为一个结果相关的知识,希望对你有一定的参考价值。
我正在尝试从用户那里输入他们要从中进行查询的供应商选择(2个选择)和时间表(3个选择)。我同样面临上述错误。以下附件是相关文件。
html:
<form method="POST" action="/profiles/adminKaLogin/">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" class="custom-control-input" id="defaultInline1" name="inlineDefaultRadiosExample" value="1">
<label class="custom-control-label" for="defaultInline1">Vendor 1</label>
</div>
<!-- Default inline 2-->
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" class="custom-control-input" id="defaultInline2" name="inlineDefaultRadiosExample" value="2">
<label class="custom-control-label" for="defaultInline2">Vendor 2</label>
</div>
<br>
<h3> Select time period</h3>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" class="custom-control-input" id="defaultInlines1" name="inlineDefaultRadiosExample1" value="1">
<label class="custom-control-label" for="defaultInlines1">1 Month</label>
</div>
<!-- Default inline 2-->
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" class="custom-control-input" id="defaultInlines2" name="inlineDefaultRadiosExample1" value="2">
<label class="custom-control-label" for="defaultInlines2">2 Months</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" class="custom-control-input" id="defaultInlines3" name="inlineDefaultRadiosExample1" value="6">
<label class="custom-control-label" for="defaultInlines3">6 Months</label>
</div>
<br>
<button type="submit" class="btn btn-primary" name="form1">Submit</button>
</form>
The models.py
class vendor(models.Model):
id = models.CharField(max_length=20, primary_key=True)
name = models.CharField(max_length=30)
class employee(models.Model):
name = models.OneToOneField(User, on_delete=models.CASCADE)
id = models.CharField(max_length=20, primary_key=True)
balance = models.IntegerField(default=0)
class transaction(models.Model):
vendor_id = models.ForeignKey(vendor, on_delete=models.CASCADE)
emp_id = models.ForeignKey(employee, on_delete=models.CASCADE)
debit = models.IntegerField()
credit = models.IntegerField()
timestamp = models.DateField(("Date"), default=datetime.date.today)
The views.py
if 'form1' in request.POST:
d={}
vendor_choice = request.POST["inlineDefaultRadiosExample"]
date_choice = request.POST["inlineDefaultRadiosExample1"]
x = employee.objects.all()
y = vendor.objects.all()
if date_choice == 1:
d = transaction.objects.filter(vendor_id=y, emp_id = x, timestamp__gte = datetime.date.today() - datetime.timedelta(days=30))
elif date_choice == 2:
d = transaction.objects.filter(vendor_id=y, emp_id = x, timestamp__gte = datetime.date.today() - datetime.timedelta(days=60))
else:
d = transaction.objects.filter(vendor_id=y, emp_id = x, timestamp__gte = datetime.date.today() - datetime.timedelta(days=180))
print(d)
return render(request, 'profiles/adminKaLogin.html', {'model':d})
我不知道为什么这个问题来了。任何帮助表示赞赏。
答案
如果使用列表/元组/查询集进行过滤,则需要在__in
之前使用=
以上是关于精确查找的QuerySet值必须使用Django中的切片错误限制为一个结果的主要内容,如果未能解决你的问题,请参考以下文章
如何让用户关联到另一个模型 DRF。 ValueError:精确查找的 QuerySet 值必须使用切片限制为一个结果
在 Django 中,如何使用动态字段查找过滤 QuerySet?
Django查找数据库objects.filter() 和 排序order_by 和 Q()与或非 和 F()属性之间比较 的用法