django をいじるのに忙しいのですが、つまずくようなことが 1 つあります。現在、私は 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 Web サイトのクエリセット、モデル、およびビューのドキュメントとリファレンスを確認しました。しかし、これを行う方法についてはまだ明確ではありません。
また、一般的なリスト ビューで URL を設定しましたが、テンプレートの 2 番目のテーブルからuser_nameフィールドにアクセスしたいと考えています。urls.py とシェル経由で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'
だから基本的に、
- 私は何を間違っていますか?
- 何か不足していますか?
- 同じクエリセット内の 2 つのテーブルからテンプレートにフィールドを渡す最良の方法は何ですか (したがって、両方のテーブルのフィールドにアクセスできます)
- これは一般的なビューで行うことができますか?