0

我来自 PHP/SQL 背景,所以 django 中的整个数据访问技术对我来说是一个挑战。到目前为止,在 djangobook 中,如果我想从数据库中获取值,它已经教会我在 models.py 中使用 unicode 函数。

 def __unicode__(self):
    return self.name

当然,这不是它的本意吗?首先,它只返回一列,而且如果我想从其他函数访问表以用于其他目的,“名称”列是我唯一可以返回的吗?好像我只能从表中返回一列 - 在这种情况下,我选择了“名称”。目前我正在做:

Publisher.objects.filter(name='test')

但是这里没有办法改变我想要返回的东西,它总是回到models.py中必须手动改变的静态unicode函数?当然有一种方法可以运行看起来像的 python 版本查询

"SELECT name, firstname FROM users WHERE user_id = 1"

所以基本上,我将如何在 python 中编写这个查询而不必使用愚蠢的、有限的 unicode 函数?生产网络应用程序将如何做到这一点?我完全错过了这里的概念吗?

谢谢,很抱歉这个问题解释得很糟糕。

PS在django中使用SQL会更好吗?还是这是不好的做法?

4

1 回答 1

4

可以使用属性访问简单地访问字段:

publisher = Publisher.objects.get(name='test')
print publisher.pk
print publisher.name
print publisher.some_other_field

或者,关于你的例子

user = User.objects.get(pk=1)
print user.first_name
print user.last_name

并且,在模板中:

{{ user.first_name }}

__unicode__方法用于显示对象的表示。它不用于通用字段访问。


关于您的问题,不,您不应该在这里使用 SQL。

于 2013-09-22T17:07:48.753 回答