Djangoで遊んでいるうちに外出しているようですが、今、私はSQLを書くのにたくさんの経験があるので、私はprobすることができます。 ORMがなければ結果を返します。私はクエリセット、モデルや意見のドキュメントおよび参照をしてきたDjango - 外部キー関係に従う(つまり、SQLでJOIN)
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)
:
は、基本的には、この私が欲しいSQLクエリは
Select
table1.id
table1.text
table1.user
table2.user_name
table2.url
from table1, table2
where table1.user_id = table2.id
私のモデルクラスとして定義されている返されますdjangoのウェブサイトしかし、それはまだこれを行う方法については明確ではありません。
URLを汎用リストビューで設定しましたが、テンプレートの2番目のテーブルのフィールドのにアクセスしたいとします。私はselect_relatedをurls.pyで試してみましたが、シェルを介しても動作していないようです。以下の例を参照してください。
シェルで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つのテーブルのフィールドをテンプレートに渡す最適な方法は何ですか(両方のテーブルのフィールドにアクセスできるように)
- これは一般的なビューで行うことができますか? このような何かが動作するはず
ああ、気が滅茶苦茶だった。あなたのテンプレートに関連するフィールドを含めるには、 {{object.id。<フィールドfrom Table2> – ismail
はあなたのテンプレートに明記してください。 {{オブジェクト。<外部キーID>。<テーブル2のフィールド> }} – ismail