У меня есть форма регистрации, где пользователь должен выбрать один из 2 вариантов.
Django отображает все правильно, администратор django также имеет все в порядке, но db записывает все возможные варианты в качестве значения.
forms.py
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email','password1','password2']
class UserProfileForm(forms.ModelForm):
terms_compliance = forms.BooleanField(label=mark_safe('I agree with <a href="/questions/whyname/" target="_blank">terms and conditions </a>'))
class Meta:
model = UserProfile
widgets = {'role': forms.RadioSelect}
fields = ('role','terms_compliance')
def __init__(self):
self.fields['terms_compliance'].initial = True
models.py
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
role_choices = [('publisher','Publisher'), ('advertiser','Advertiser')]
role = models.CharField(max_length=15, choices=role_choices, default=None)
terms_compliance = models.BooleanField()
def __str__(self):
return self.user.username
В новом экземпляре (который user.userprofile.role_choices
) мне нужно advertiser
или publisher
, но все, что у меня есть: [('publisher','Publisher'), ('advertiser','Advertiser')]