-1

我有一个问题模型和表单,该模型中的一个字段是userid=ForeignKey(User),这在问题模型上效果很好,能够从下拉列表中选择用户。

但是当我想从模型中列出问题时有点棘手,这是从用户表中查找用户名的最佳方法?因为此时我不能有下拉菜单!

我想要一个简单的东西,例如

提问者的问题标题:查找用户名

4

2 回答 2

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

然后将 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>
于 2008-12-23T18:35:56.277 回答
0

我觉得你的问题含糊不清。如果要获取Question与给定 a 的特定User实例相关的所有实例,user_name可以这样做:

questions = Question.objects.filter( userid__username='user_name' )

如果您已经有一个User实例(例如,保存在一个名为 的变量中user)并且想要获取Question与其相关的所有对象,您可以通过以下方式获取这些对象:

questions = user.question_set.all()
于 2008-12-23T06:20:27.900 回答