Вау, мне так тяжело. I должен делать что-то неправильно, я получаю невероятное количество запросов.Модели и редактирование форм Django
Итак, мои модели являются следующие: игрока Clan Match (как в матче с игрой) MatchMap (карты играли матча) MatchPlayer (игроки матча)
Все они связаны через внешний ключ, без отношения m2m. Игрок может быть в клане, а матч - 2 клана. В матче может быть любое количество карт, и только игроки из двух вовлеченных кланов могут находиться в матче (хотя в будущем игроки могут оказаться не в том же клане, который они сыграли в этом матче, поэтому я указываю ту сторону, которую они играли на совпадение).
Итак, я сделал подачу, все в порядке. Но для редактирования этой информации это caos! Для редактирования MatchPlayers матча я попытался с помощью inlineformset_factory
PlayersFormSet = inlineformset_factory(MatchBetweenClans, MatchPlayer)
playersForms = PlayersFormSet(instance=match)
Это уже начинает плохо, потому что для каждого экземпляра игрока на матче, Джанго попадает в базу данных и получает список всех игроков. Если, например, 6 игроков на матч, и у меня есть 2 пустые формы provived по inlineformset_factory
, я вижу на бревне
SELECT
...
FROM
`accounts_customuser`
8 раз.
Теперь, даже если это сработало правильно для меня, оно не делает то, что мне нужно. При добавлении игроков в матч не все игроки должны быть в списке, только те из 2 указанных кланов, в идеале как форма флажков (каждый флажок является игроком клана). При подаче матча это легко сделать:
clan1PlayerList = CustomUser.objects.filter(clan=clan1Instance)
clan2PlayerList = CustomUser.objects.filter(clan=clan2Instance)
playersClan1 = forms.ModelMultipleChoiceField(queryset=clan1PlayerList, label="Jogadores - "+clan1Instance.tag+"", widget=forms.CheckboxSelectMultiple(attrs={'class':'input_checkbox'}))
playersClan2 = forms.ModelMultipleChoiceField(queryset=clan2PlayerList, label="Jogadores - "+clan2Instance.tag, widget=forms.CheckboxSelectMultiple(attrs={'class':'input_checkbox'}))
Есть в любом случае я мог бы это на фармакологическом для редактирования? Я не могу найти способ отправить список игроков клана и верных игроков матча в форму. Спасибо
Вопрос был бы намного легче читать, если бы вы разместили модели вместо текстового описания того, что они собой представляют. Не жалуюсь, просто мое мнение. :-) – cethegeek