Как заполнить форму Django с выбором из ваших моделей - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть CreateSong CBV в Django, который позволяет мне создавать объекты песни для модели. Мой вопрос в том, как в форме, которую я создал для представления, как сделать так, чтобы столбец альбома автоматически заполнялся альбомами, созданными только пользователем? Я получаю ошибки, называя себя "таким".

Смотрите мои взгляды ниже

  class CreateSong(CreateView):
    model = Song
    fields = [album, song_title]
    fields['album'].queryset = Album.objects.filter(owner=self.request.user)

Ответы [ 2 ]

0 голосов
/ 21 ноября 2019

У вас нет доступа к self.request.user, потому что вы вызываете его на уровне класса, то есть когда определяется класс, а не когда фактически вызывается представление. Вместо этого вы должны переопределить метод get_form, как в ответе Давида.

0 голосов
/ 21 ноября 2019

Я думаю, вы должны переопределить get_form. Смотрите пример ниже:

class CreateSong(CreateView):
    model = Song
    fields = [album, song_title]

    def get_form(self):
        form = super().get_form()
        form.fields['album'].queryset = Album.objects.filter(owner=self.request.user)
        return form
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...