Python Django从数据库中获取多个字段
我是否可以从Django数据库中检索多个字段 在Python Django从数据库中获取多个字段,python,django,Python,Django,我是否可以从Django数据库中检索多个字段 在模型中一级有: class Advert(models.Model): cat = models.CharField(max_length=50) advertiser = models.ForeignKey(Advertiser) country = models.CharField(max_length=500) city = models.CharField(max_length
模型中
一级有:
class Advert(models.Model):
cat = models.CharField(max_length=50)
advertiser = models.ForeignKey(Advertiser)
country = models.CharField(max_length=500)
city = models.CharField(max_length=500)
title = models.CharField(max_length=200)
body = models.CharField(max_length=200)
link = models.URLField()
def __unicode__(self):
return self.title
函数\uuuu unicode\uuuu(self)
将只返回广告的标题
如何获取字段:(标题、正文、链接)
是的,如下所示,使用u
将其标记为unicode字符串您要使用Django函数。从示例中可以看出:
>>> Advert.objects.values_list('title', 'body', 'link')
[(u'Title', u'This is a body text line.', u'http://example.com/'),
(u'Title 2', u'This is another body text line.', u'http://example.com/foobar')]
任何需要的过滤器和注释都应该放在值\u列表
调用之前。如果您只希望每条记录有一个字段,并且希望它位于平面列表中,请添加flat=True
:
>>> Advert.objects.values_list('link', flat=True)
[u'http://example.com/', u'http://example.com/foobar']
您忽略了一个事实,即ORM正是一个对象关系映射器。当您执行
my_advert=advert.objects.get(无论什么)
时,您将获得一个包含所有字段的advert实例。因此,您可以执行我的广告标题
,我的广告正文
,等等。\uuuuuuu unicode\uuuu
返回str
不好。最好返回unicode字符串,例如返回u'{}-{}-{}'。格式(self.title,self.body,self.link)
从问题:“函数\uuuunicode\uuuuuuuu(self)
将只返回广告的标题。”不需要重新定义\uunicode\uuuuu
。他的问题是可以解释的。尽管如此,他在下面给出了很好的答案,并且他开始编码时没有阅读最少的文档:可以使用PAndfilter
或all
来代替get
来获取对象列表和值列表
(或值
)可以只返回感兴趣的字段,这样数据库就不必返回所有对象的字段并从中构造对象。不幸的是,OP没有说明他们是如何得到有问题的广告的。。。
>>> Advert.objects.values_list('link', flat=True)
[u'http://example.com/', u'http://example.com/foobar']