无论如何我可以从Django数据库中检索多个字段吗?
在Model
课程中,我有:
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
函数__unicode__(self)
只返回Advertise的标题。
如何获取字段:(title, body, link)
?
答案 0 :(得分:3)
def __unicode__(self):
return u'{} - {} - {}'.format(self.title, self.body, self.link)
是,如下所示,使用u
将其标记为unicode字符串
答案 1 :(得分:1)
您想使用Django的values_list
功能。从示例:
>>> 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')]
任何所需的过滤器和注释都应放在values_list
调用之前。如果您只想为每条记录创建一个字段,并希望将其放在一个平面列表中,请添加flat=True
:
>>> Advert.objects.values_list('link', flat=True)
[u'http://example.com/', u'http://example.com/foobar']
答案 2 :(得分:1)
你错过了ORM就是这样一个事实,一个对象 - 关系映射器。当您执行my_advert = Advert.objects.get(whatever)
时,您将获得包含所有字段的广告实例。因此,您可以执行my_advert.title
,my_advert.body
等