Начальное значение Django ModelChoiceField не работает - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть следующая форма:

class AddGameForm(forms.ModelForm):
    notes = forms.CharField(widget=forms.Textarea)
    shelf = forms.ModelChoiceField(queryset=Shelf.objects.all())

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(AddGameForm, self).__init__(*args, **kwargs)
        self.fields['shelf'].queryset = Shelf.objects.filter(owner=self.user)

    class Meta:
        model = Game
        fields = ['name', 'status', 'hours', 'minutes', 'platform', 'notes', 'shelf']

и я хочу установить начальное значение shelf. Я пробовал это, но это совсем не работает.

shelf = GameShelfJunction.objects.filter(game_id=game).first()
form = AddGameForm(instance=game, initial={'shelf': shelf.pk}, user=request.user)

Я не могу найти в Интернете ничего другого, кроме использования initial kwarg, так что я немного растерялся. Связано ли это со мной с помощью функции __init__ для фильтрации набора запросов?

1 Ответ

1 голос
/ 18 апреля 2019

вы можете попытаться добавить это внутрь init function:

self.initial['shelf'] = YOUR_INITIAL_VALUE

где YOUR_INITIAL_VALUE - значение, которое вы хотите инициализировать полкой.

...