如何在Django中创建查找?

Gat*_*ath -1 python django lookup

我有一个问题模型和表单,这个模型中的一个字段是userid = ForeignKey(User),这在问题模型上工作得非常好,能够从下拉列表中选择用户.

但是当我想从模型中列出问题时,这是一个棘手的问题,这是从Users表中查找用户名的最佳方法吗?因为在这一点上我不能下拉!

我想要一个简单的事情,例如

问题标题问题:查找用户名

jpw*_*tts 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
Run Code Online (Sandbox Code Playgroud)

然后实例Question化为question:

>>> question.user # the `User` instance
<User: username>

>>> question.user_id # the user's primary key
1
Run Code Online (Sandbox Code Playgroud)

看起来你可能期望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>
Run Code Online (Sandbox Code Playgroud)