2013-02-23 90 views
1

我想設置爲我在Admin用戶的性別,但得到的錯誤Django管理Choicefield錯誤

Value u"[u'm']" is not a valid choice.

admin.py

class PlayerForm(forms.ModelForm): 
    GENDER_CHOICES = (
     ('m', 'Male'), 
     ('f', 'Female'), 
    ) 
... 
gender = forms.MultipleChoiceField(label="Gender", choices=GENDER_CHOICES) 
... 

class Meta: 
    model = Player 


class PlayerAdmin(admin.ModelAdmin): 
    form = PlayerForm 


admin.site.register(Player, PlayerAdmin) 

models.py (Player Model)

class Player(AbstractBaseUser): 
    GENDER_CHOICES = (
     ('m', 'Male'), 
     ('f', 'Female'), 
    ) 
    ... 
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES) 
    ... 

趣味事實:表單在admin中顯示來自dadabase的正確默認值。

------WebKitFormBoundary009tVyo4cRJvIAnC 
Content-Disposition: form-data; name="gender" 

m 

編輯:嘗試提交表單時

POST有效載荷忘了提,該DB的Postgres 8.4和有問題的列是

VARCHAR(1) 
+0

你能發佈回溯? – 2013-02-23 14:33:35

回答

1

由於您使用MultipleChoiceField

gender = forms.MultipleChoiceField(label="Gender", choices=GENDER_CHOICES) 

這將性別保存到「列表」。導致:

>>> gender = ['m'] 

您需要使用ChoiceField這是用來選擇一個單一的東西:

gender = forms.ChoiceField(label="Gender", choices=GENDER_CHOICES) 

導致:

>>> gender = 'm' 
+0

謝謝你解決了它。必須有「意外」選擇的MultipleChoiceField,這從來沒有我的意圖。 – DerShodan 2013-02-23 14:59:07