2008-12-23 50 views
-1

我有一個問題模型&窗體,這個模型中的字段之一是userid = ForeignKey(用戶),這工作完美的問題模型,能夠從下拉選擇用戶。如何在Django中創建查找?

但有點棘手,當我想列出模型的問題,這是最好的方式查找從用戶名錶的用戶名?因爲在這一點上,我不能有下拉!

我想要一個簡單的東西,例如

問題標題 通過問:查找用戶名稱

回答

0

我覺得你的問題含糊其辭。如果你想獲取那些關於給予user_name特定User實例的所有Question情況下,你可以這樣做:

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

如果你已經有了一個User實例(持有,也就是說,在一個叫user變量)並希望獲取有關的所有Question對象,你可以得到那些有:

questions = user.question_set.all() 
5

您的字段的名稱(而不是useriduser)讓我覺得,你可能會感到困惑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 

然後實例化一個Questionquestion

>>> 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>