我有一个问题模型和表单,该模型中的一个字段是userid=ForeignKey(User),这在问题模型上效果很好,能够从下拉列表中选择用户。
但是当我想从模型中列出问题时有点棘手,这是从用户表中查找用户名的最佳方法?因为此时我不能有下拉菜单!
我想要一个简单的东西,例如
提问者的问题标题:查找用户名
您的字段名称(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
与给定 a 的特定User
实例相关的所有实例,user_name
可以这样做:
questions = Question.objects.filter( userid__username='user_name' )
如果您已经有一个User
实例(例如,保存在一个名为 的变量中user
)并且想要获取Question
与其相关的所有对象,您可以通过以下方式获取这些对象:
questions = user.question_set.all()