2011-08-02 47 views
0

我正在使用CheckBoxSelectMultiple來顯示供用戶從中選擇的東西列表。當我試圖挽救,它給我的錯誤:保存CheckBoxSelectMultiple時接收unicode而不是我的對象

'unicode' object has no attribute 'name' 

我的選擇列表中有2元組,第一個項目是我的自定義保存對象,而第二項是將人類可讀的版本(字符串) 。

forms.py: 

    # I have a list of my custom objects here, which is built dynamically 
    data = grab_data() 

    # Building the choice list 
    CHOICES = [] 
    for item in data: 
     CHOICES.append((item, item.name)) 

    class DisplayForm(forms.Form): 
     display = forms.MultipleChoiceField(choices=CHOICES, widget=widgets.CustomCheckboxSelectMultiple()) 

這是訪問量:

views.py: 
.... 
if forms.is_valid(): 
    items = request.POST.getlist('display') 
    for item in items: 
     print type(item) # Says it's unicode, not my custom object that I want to add to my model. 
     mymodel = PackageModel(name=item.name, etd=item.etd) # breaks here since 'item' is unicode object and not my custom object 
     mymodel.save() 

.... 

望着CheckboxSelectMultiple源代碼(非常相似,我用我的自定義的),我認爲這是上線706,它試圖強制unicode的option_value,我認爲這應該是我的自定義對象。刪除,但沒有幫助,但。

這裏是鏈接到源上的Django:

https://code.djangoproject.com/browser/django/trunk/django/forms/widgets.py 

回答

0

你會從你的項目,而不是對象本身找回值的列表。您需要自行從項目列表中的值實例化這些對象。

因爲您從forms.Form繼承而不是forms.ModelForm,Django不會從您的項目列表中的值實例化對象。

+0

感謝您的回覆。我最終只是使用了一個字典,並通過使用unicode的東西作爲關鍵字來提取正確的對象。 – sharkfin

相關問題