2013-05-28 75 views
0

很顯然,我是Django的新手,因爲我會認爲這是相對簡單的。在Django中訪問模型變量

讓我說我的models.py我創建了一個模型「用戶」,有兩個字段,一個「用戶名」和一個「電子郵件」字段。在名爲「UserForm」的表單中,我想訪問「User」模型中所有「用戶名」的列表。然後這個列表將被用來使用Select填充下拉菜單。

我覺得這應該很容易,我一直在尋找一些簡單的方法來做到這一點。我可以找到很多不全面的方法(即filter(username =「Joe」)),但是我找不到一個能列出所有用戶的方法。

任何幫助將不勝感激。

+0

你能更具體嗎?你想在哪裏顯示清單?它是形式的一部分嗎? – karthikr

回答

0

您正在尋找ModelChoiceField。它的queryset屬性可以通過ORM調用填充,讓您獲得所有的用戶。有關詳細信息,請參閱文檔中的Creating Forms from Models部分。

from django.contrib.auth.models import User 

class UserForm(forms.ModelForm): 
    class Meta: 
     model = # Your model here 

    def __init__(self, *args, **kwargs): 
     self.fields['user'] = forms.ModelChoiceField(queryset=User.objects.all()) 

ForeignKey的領域會自動顯示爲ModelChoiceFields,但你總是可以忽略的選擇,如果你需要。

+0

感謝您收到那個打字丹尼爾。 – Brandon

+0

對不起,如果這是愚蠢的,但你能解釋__init__函數?我假設當表單被調用時,它將被運行,並用User對象列表填充'user'字段。問題是,我沒有使用django的默認用戶(主要是因爲我不知道如何)。我怎麼能用自定義用戶模型來做到這一點?或者我應該只使用django用戶? – dirtshell

+0

這是正確的。沒有說你必須使用Django的默認用戶對象。這取決於您的應用程序的需求。 – Brandon