Django Get()返回的对象多于一个 [英] Django Get() Returned More Than One Object

查看:85
本文介绍了Django Get()返回的对象多于一个的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到以下错误:

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()返回一个查询集.因此,您可以通过遍历查询集或索引来访问数据.

<清单> <代码>用于清单中的数据:打印(data.description)

作为参考,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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆