首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >DJANGO:引用id

DJANGO:引用id
EN

Stack Overflow用户
提问于 2011-05-23 18:55:34
回答 2查看 95关注 0票数 0

这里有一个问题:错误'QuerySet‘对象没有'address’属性

代码语言:javascript
代码运行次数:0
运行
复制
        bdns = Business.objects.filter(name='slow')
        addx = bdns.address
        addr = Address.objects.get(id=addx)

我该怎么办?

我的商业模式:

代码语言:javascript
代码运行次数:0
运行
复制
class Business(models.Model): 
    phone = PhoneNumberField()
    address = models.ForeignKey(Address)
    name = models.CharField(max_length=64)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-23 19:00:20

查询集是一个集合,即使该集合只包含一个元素。当您执行Model.objects.filter()时,它会返回一个查询集。

如果您想返回单个对象,请使用Model.objects.get()

所以,为了你的目的:

代码语言:javascript
代码运行次数:0
运行
复制
bdns = Business.objects.filter(name='slow') # returns a collection
b = dbns[0] # get the first one
the_address = b.address # the address

# or...
try:
    bdns = Business.objects.get(name='slow') # get single instance
except Business.DoesNotExist:
    bdns = None # instance didnt exist, assign None to the variable
except Business.MultipleObjectsReturned:
    bdns = None # the query returned a collection

if bdns is not None:
    the_address = bdns.address

# the_address is an instance of an Address, so no need to do the lookup with the id

print the_address.id # 7
print the_address.street # 17 John St
print the_address.city # Melbourne
票数 3
EN

Stack Overflow用户

发布于 2011-05-23 19:00:48

代码语言:javascript
代码运行次数:0
运行
复制
    bdns = Business.objects.filter(name='slow')

返回一个QuerySet ( Business对象的集合),您需要迭代以获取每个具有address的元素。

代码语言:javascript
代码运行次数:0
运行
复制
addr = Address.objects.get(id=addx)

应该行得通

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6096252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档