2013-02-23 9 views
1

Я пытаюсь установить Пол для моих пользователей в администратора, но получаю ошибку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 (Модель игрока)

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

Удовлетворительный факт: форма показывает правильное значение по умолчанию из dadabase в admin.

POST Payload при попытке отправить форму:

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

m 

Edit: Забыл упомянуть, что БД Postgres 8.4 и столбец в вопросе является

VARCHAR(1) 
+0

Вы можете разместить отслеживающий? –

ответ

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

Смежные вопросы