我来自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函数?生产网络应用程序如何做到这一点?我完全错过了这个概念吗?
谢谢,对于这个解释不清的问题感到抱歉。
P.S在django中使用SQL会更好吗?或者这是不好的做法?
答案 0 :(得分: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。