Мои form.py
Initialize ModelChoiceField в форме
class BannerForm(forms.ModelForm):
name = forms.CharField(max_length=32)
affiliation = forms.ModelChoiceField(Affiliation.objects.all(), disabled = True, initial='Red')
Мой model.py
class Affiliation (models.Model):
name = models.CharField(max_length=32, unique=True)
def __str__(self):
return self.name
class Banner(models.Model):
name = models.CharField(max_length=32, unique=True)
affiliation = models.ForeignKey(Affiliation)
Мой populate
скрипт (для запуска при начинают заполнять базу данных)
def populate():
red = add_affiliation('Red')
black = add_affiliation('Black')
Когда я заполнить форму для создания баннера он не работает, он не видит красный (или ред), как действительный выбор:
<ul class="errorlist"><li>affiliation<ul class="errorlist"><li>Select a valid choice. That choice is not one of the available choices.</li></ul></li></ul>
Я изменил мою form.py
:
class BannerForm(forms.ModelForm):
name = forms.CharField(max_length=32)
affiliation = forms.ModelChoiceField(Affiliation.objects.all(), disabled = True, initial=Affiliation.objects.get(id=1))
И дают ту же ошибку. Я снова изменился:
class BannerForm(forms.ModelForm):
name = forms.CharField(max_length=32)
affiliation = forms.ModelChoiceField(Affiliation.objects.all(), widget=forms.HiddenInput(), initial=Affiliation.objects.get(id=1))
это работает, но только если я изменить код, когда база данных уже существует, потому что если не моя первая миграция дает ошибку:
django.db.utils.OperationalError: no such table: core_affiliation
Как я могу решить? Я бы предпочел не использовать HiddenInput и, если это возможно, не кодировать id.
Спасибо
Может быть, вам нужна дополнительная информация? – fabio