Как заполнить поле выбора Django ChoiceField атрибутами объекта?
У меня есть Election и Candidate объектная модель следующего вида:
class Election(models.Model):
id = models.IntegerField(primary_key=True, unique=True)
name = models.CharField(max_length=80)
region = models.CharField(max_length=80)
candidates_count = models.IntegerField()
total_votes_cast = models.IntegerField()
def __str__(self):
return self.name
class Candidate(models.Model):
id = models.IntegerField(primary_key=True, unique=True)
name = models.CharField(max_length=80)
party = models.CharField(max_length=80)
election_id = models.IntegerField()
vote_count = models.IntegerField()
def __str__(self):
return self.name
У меня есть форма для создания нового кандидата, примерно так:
class AddNewCandidateForm(forms.Form):
PARTY_CHOICES = [
(1, "Party 1"),
(2, "Party 2"),
(3, "Party 3"),
(4, "Party 4"),
(5, "Party 5"),
(6, "Other")
]
candidate_name = forms.CharField(
max_length=80,
required=True,
label='Candidate Name'
)
candidate_party = forms.ChoiceField(
label='This candidates party',
required=True,
widget=forms.Select(),
choices=PARTY_CHOICES
)
candidate_election = forms.ChoiceField(
label="The election that this candidate is participating in",
required=True,
widget=forms.Select()
)
Я хочу заполнить candidate_election ChoiceField атрибутом name все существующие Election объекты в базе данных.
Какой лучший способ сделать это? Я пытаюсь понять, как сделать 2 кортежа для ChoiceField, чтобы принять
Спасибо!
Обновите переменную candidate_election на следующее
candidate_election = forms.ChoiceField(
label="The election that this candidate is participating in",
required=True,
widget=forms.Select()
choices=[(e.id,e.name) for e in Election.objects.all()]
)