Как заполнить поле выбора 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()]
)
Вернуться на верх