Как ограничить выбор в Джанго

Я хочу создать форму, в которую я добавлю только одну команду страны. Я хочу создать кнопку "Добавить сборную России". Требуется ограниченная форма флажка для одной страны.

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. Вы можете показать раскрывающийся список с одной страной.
  2. Вы не можете показать страну вообще, и установить ее в представлении, прежде чем сохранить объект.

Для варианта 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})
Другие вопросы по тегам