Как ограничить выбор в Джанго
Я хочу создать форму, в которую я добавлю только одну команду страны. Я хочу создать кнопку "Добавить сборную России". Требуется ограниченная форма флажка для одной страны.
models.py
RUSSIA = 'RUS'
USA = 'USA'
GERMANY = 'GER'
COUNTRY = (
(RUSSIA, "Russia"),
(USA, "USA"),
(GERMANY, "Germany"),
)
class Country(models.Model):
country = models.CharField(max_length=3, choices=COUNTRY, default=RUSSIA)
name_of_team = models.CharField(max_length=255, blank=True, null=True)
def __unicode__(self):
return self.name_of_team
forms.py
class AddCountryForm(forms.ModelForm):
class Meta:
model = Country
fields = ('country', 'name_of_team', )
1 ответ
Решение
У вас есть два варианта:
- Вы можете показать раскрывающийся список с одной страной.
- Вы не можете показать страну вообще, и установить ее в представлении, прежде чем сохранить объект.
Для варианта 1:
class AddCountryForm(forms.ModelForm):
country = forms.ChoiceField(choices=(('RUS', 'Russia'),))
class Meta:
model = Country
fields = ('name_of_team',)
Для варианта 2:
class AddCountryForm(forms.ModelForm):
class Meta:
model = Country
fields ('name_of_team',)
def add_country(request):
form = AddCountryForm(request.POST or None)
if form.is_valid():
obj = form.save(commit=False)
obj.country = 'RUS'
obj.save()
return redirect('/thanks')
return render(request, 'form.html', {'form': form})