Я создаю приложение для записи прогнозов для набора из 10 футбольных матчей каждую неделю. Для генерации формы я хочу вернуть список из 10 приборов, определенных в форме базы данных на текущую игровую неделю. Затем пользователь введет результаты и будет сохранен в модели entry_data
Я пробовал много вариаций, и самое близкое, что у меня есть, - это inlineformset_factory, но это работает только с одним объектом. Как можно инициировать это со всеми 10 приборами?
Я чувствую, что могу взломать это, чтобы работать с циклами и генерировать много наборов форм, но чувствую, что должен быть более элегантный способ
Models.py
#to save entries
class entry_data(models.Model):
team_id = models.ForeignKey(usr_teams, models.CASCADE)
fixture_id = models.ForeignKey(Fixtures, models.CASCADE)
score_home = models.PositiveIntegerField(default=0)
score_away = models.PositiveIntegerField(default=0)
# list of fixtures for each gameweek
class Fixtures(models.Model):
home_team = models.ForeignKey(Teams, models.CASCADE)
away_team = models.ForeignKey(Teams, models.CASCADE)
game_week = models.ForeignKey(configdata, models.CASCADE)
class configdata(models.Model):
gameweek = models.PositiveIntegerField(default=0)
season = models.PositiveIntegerField(default=2019)
gw_deadline = models.DateTimeField(default=datetime.now)
gw_active = models.BooleanField(default=False)
gw_closed = models.BooleanField(default=False)
Forms.py
class score_entry(forms.ModelForm):
class Meta:
model = entry_data
exclude = ()
Views.py
def get(self, request):
gameweek = '1'
fixtures = fix.objects.get(game_week__gameweek='1'))
FixtureFormSet = inlineformset_factory(Fixtures, entry_data, form = score_entry, extra=0, can_delete=False)
formset = FixtureFormSet(instance = fixtures)
return render(request, self.template_name, {'formset': formset})