Моей проблемы похоже на Django Passing Custom Form Parameters to FormsetДжанго Передачи пользовательской формы Параметров для ModelFormset
Ive есть эти классы
class Game(models.Model):
home_team = models.ForeignKey(Team, related_name='home_team')
away_team = models.ForeignKey(Team, related_name='away_team')
round = models.ForeignKey(Round)
TEAM_CHOICES = ((1, '1'), (2, 'X'), (3, '2'),)
class Odds(models.Model):
game = models.ForeignKey(Game, unique=False)
team = models.IntegerField(choices = TEAM_CHOICES)
odds = models.FloatField()
class Meta:
verbose_name_plural = "Odds"
unique_together = (
("game", "team"),
)
class Vote(models.Model):
user = models.ForeignKey(User, unique=False)
game = models.ForeignKey(Game)
score = models.ForeignKey(Odds)
class Meta:
unique_together = (
("game", "user"),)
И я определил свой собственный modelformset_factory:
def mymodelformset_factory(ins):
class VoteForm(forms.ModelForm):
score = forms.ModelChoiceField(queryset=Odds.objects.filter(game=ins), widget=forms.RadioSelect(), empty_label=None)
def __init__(self, *args, **kwargs):
super(VoteForm, self).__init__(*args, **kwargs)
class Meta:
model = Vote
exclude = ['user']
return VoteForm
И я использую это примерно так:
VoteFormSet = modelformset_factory(Vote, form=mymodelformset_factory(v), extra=0)
formset = VoteFormSet(request.POST, queryset=Vote.objects.filter(game__round=round, user=user))
Это показывает вид:
выпадающих из игры (ы) в раунде, указанной и должно отображать 3 радиокнопку для Odds, но я не знаю, что передать в качестве параметра к mymodelformset_factory. Если v = Game.objects.get (pk = 1), то он отображает только игру с pk = 1 для ВСЕХ игр, мне нужна игра v = Game.objects.get (pk = ", которая связана с шансами относительно »), если вы поймаете мой дрифт.
Это, кажется, работает для меня подобной проблемы! – balleyne