忙着玩 django,但似乎让我绊倒的一件事是遵循外键关系。现在,我在编写 SQL 方面有很多经验,所以我可以试一试。如果 ORM 不存在,则返回结果。
基本上这是我想要返回的 SQL 查询
Select
table1.id
table1.text
table1.user
table2.user_name
table2.url
from table1, table2
where table1.user_id = table2.id
我的模型类已定义为:
class Table1(models.Model):
#other fields
text = models.TextField()
user = models.ForeignKey('table2')
class Table2(models.Model):
# other fields
user_name = models.CharField(max_length=50)
url = models.URLField(blank=True, null=True)
我已经阅读了 django 网站上查询集、模型和视图的文档和参考资料。但它仍然不清楚如何做到这一点。
我还使用通用列表视图设置了 url,但想从模板中的第二个表中访问user_name字段。我在 urls.py 和 shell 中尝试了select_related,但它似乎不起作用。请参阅下面的示例。
在 url 中配置
url(r'^$','django.views.generic.list_detail.object_list', { 'queryset': Table1.objects.select_related() }),
在贝壳
>>> a = Table1.objects.select_related().get(id=1)
>>> a.id
1
>>> a.user_name
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'Table1' object has no attribute 'user_name'
所以基本上,
- 我究竟做错了什么?
- 我错过了什么吗?
- 将同一查询集中两个表中的字段传递到模板的最佳方法是什么(因此可以访问两个表中的字段)
- 这可以用通用视图来完成吗?