Я намагаюся зробити webapp, використовуючи djangoдозволяє користувачеві вибрати того, для кого, на їхню думку, переможець буде в декількох іграх. У мене є ігри, як модель, яка має домашню команду, віддалену команду, id, серед іншого. Тепер, щоб подати повідомлення, я хотів би, щоб користувачі вставляли декілька рядків у таблицю з ідентифікатором користувача та вибраною командою.
Я спробував використовувати formets, але не можу зрозуміти, як вони працюють з різними мітками.
Форма, яку я наразі маю, це.
class PickForm(forms.ModelForm):
"""
A form that allows a user to make a pick on the
selected game
"""
error_messages = {
"no_match": ("Your selections do not match the corresponding options")
}
team_picked = forms.CharField(label=("Your choice"))
class Meta:
model = Pick
fields = ("team_picked",)
def __init__(self, *args, **kwargs):
self.user_id = kwargs.pop("user_id", None)
self.matchweek = kwargs.pop("matchweek", None)
super(PickForm, self).__init__(*args, **kwargs)
def clean_team_picked(self):
team_picked = self.cleaned_data["team_picked"]
if(team_picked == self.home_team):
return team_picked
elif(team_picked == self.away_team):
return team_picked
else:
raise forms.ValidationError(
self.error_messages["no_match"],
code="no_match",
)
def save(self, commit=True):
pick = super(PickForm, self).save(commit=False)
pick.team_picked = self.cleaned_data["team_picked"]
pick.user_id = self.user_id
pick.matchweek = self.matchweek
if commit:
pick.save()
return pick
Дякую!
Відповіді:
1 для відповіді № 1Невідомо, що ви маєте на увазі щодо "різних міток", але схоже, що ви бажаєте набрати форму набору моделей: https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/#model-formsets
Отже, у вас буде щось подібне
from django.forms import modelformset_factory
from models import PickForm
PickFormSet = modelformset_factory(Pick, form=PickForm, queryset=Pick.objects.filter())