Django Get()返回的对象多于一个 [英] Django Get() Returned More Than One Object
问题描述
我收到以下错误:
get()返回了多个清单-返回了2个!
我理解这是因为数据库中有多个具有相同值的记录,但是我想返回所有这些记录,因此我假设我需要使用.get以外的其他内容,但是我不确定是什么/
def write_pdf_view(request):如果request.method =='POST':参考= request.POST.get('Reference_IDs')y = Orders.objects.all()z = Manifests.objects.all()order = y.get(参考=参考)清单= z.get(引用=引用)........#显现p.drawString(30,620,'MANIFEST:')p.drawString(30,605,manifest.description)
问题是manifest.description行.数据库中有多个具有相同引用"的记录,因此它们将不会打印.所以我的问题是2部分:
1)如何更改manifest = z.get(reference = reference),以便可以访问多个记录
2)然后我该如何代替"manifest.description"来访问这些记录
对于第一个问题,您可以使用 filter()
方法从模型中获取特定记录.
def write_pdf_view(request):如果request.method =='POST':参考= request.POST.get('Reference_IDs')manifest = Manifests.objects.filter(reference =参考)订单= Orders.objects.get(引用=引用)
对于第二个问题, filter()
返回一个查询集.因此,您可以通过遍历查询集或索引来访问数据.
作为参考,get()返回一个对象,如果在filter()返回空列表时未找到对象,则抛出异常.
I am receiving the following error:
get() returned more than one Manifests -- it returned 2!
I understand this is because there are multiple records in the database with the same value, but I want to return ALL of those records, so I assume I need to use something other than .get but I'm not sure what/how.
def write_pdf_view(request):
if request.method == 'POST':
reference = request.POST.get('Reference_IDs')
y = Orders.objects.all()
z = Manifests.objects.all()
order = y.get(reference=reference)
manifest = z.get(reference=reference)
....
....
#Manifest
p.drawString(30,620,'MANIFEST: ')
p.drawString(30,605,manifest.description)
The issue is the manifest.description line. There are more than one records with the same "reference" in the database, and so they won't print. So my question is 2 parts:
1) how can I change manifest = z.get(reference=reference) so that I can access multiple records
2) how can I then access those records in place of "manifest.description"
For your first question you can use filter()
method for getting specific records from your model.
def write_pdf_view(request):
if request.method == 'POST':
reference = request.POST.get('Reference_IDs')
manifest = Manifests.objects.filter(reference=reference)
order = Orders.objects.get(reference=reference)
For your second question, filter()
returns a queryset.So you can access the data by iterating over the queryset or by the index.
for data in manifest:
print(data.description)
For your information get() returns an object and throws an exception if no object is found while filter() returns an empty list.
这篇关于Django Get()返回的对象多于一个的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!