Django从数据库中获取多个字段

时间:2014-12-15 15:37:32

标签: python django

无论如何我可以从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)

3 个答案:

答案 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.titlemy_advert.body