私は質問モデルとフォームを持っています。このモデルのフィールドの1つはuserid=ForeignKey(User)です。これは質問モデルで完全に機能し、ドロップダウンからユーザーを選択できます。
しかし、モデルからの質問をリストしたいときはちょっと難しいです。Users テーブルからユーザー名を検索する最良の方法はどれですか? この時点で私はドロップダウンを持てないからです!
シンプルなものが欲しい
質問のタイトル 質問者:検索ユーザー名
あなたのフィールドの名前 ( のuserid
代わりにuser
) は、Django の の動作について混乱している可能性があると思いますForeignKey
。
次のようなモデルを定義する場合:
from django.contrib.auth.models import User
from django.db import models
class Question(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=100)
...
def __unicode__(self):
return self.title
そして、 a を次のようにインスタンス化しQuestion
ますquestion
。
>>> question.user # the `User` instance
<User: username>
>>> question.user_id # the user's primary key
1
インスタンス自体question.userid
ではなく、ユーザーの主キーであることを期待しているようです。User
にアクセスするquestion.userid
と、データベース ルックアップが実行されますが、これは の値を使用して Django によって自動的に行われますquestion.userid_id
。混乱を避けるために、userid
フィールドの名前を に変更します。user
それが邪魔にならないので、あなたがやろうとしていることは、関連するユーザーとともに質問をリストすることだと思います. その場合は、テンプレートで次のようにします。
<ol>
{% for question in questions %}
<li>{{ question }} asked by: {{ question.user }}</li>
{% endfor %}
</ol>
あなたの質問は曖昧だと思います。を指定して特定のインスタンスQuestion
に関連するすべてのインスタンスをフェッチする場合は、次のように実行できます。User
user_name
questions = Question.objects.filter( userid__username='user_name' )
すでにUser
インスタンスがあり(たとえば、という変数で保持されているuser
)、それに関連するすべてのオブジェクトをフェッチしたいQuestion
場合は、次のようにしてそれらを取得できます。
questions = user.question_set.all()