2013-02-23 113 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