我有一个问题模型&表单,此模型中的一个字段是 userid = ForeignKey(User),这在问题模型上运行得非常好,能够从下拉列表中选择用户。
但是当我想从模型中列出问题时,这是一种棘手的问题,这是从查找来自Users表的用户名的最佳方法吗?因为在这一点上我不能下拉!
我想要一个简单的事情,例如。
问题标题 问:查找用户名
答案 0 :(得分:5)
您的字段名称(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
然后将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>
答案 1 :(得分:0)
我发现你的问题模糊不清。如果您要获取与给定Question
的特定User
实例相关的所有user_name
个实例,则可以这样做:
questions = Question.objects.filter( userid__username='user_name' )
如果您已经有一个User
实例(例如,在一个名为user
的变量中保存),并希望获取与其相关的所有Question
个对象,那么您可以使用:
questions = user.question_set.all()