Предварительное заполнение формы django, только если объект не 'None' - PullRequest
0 голосов
/ 05 января 2019

У меня есть форма django, которая предварительно заполняется определенными данными:

def edit_song(request, song_id):
"""Edit a song."""
song = Song.objects.get(id=song_id)

if request.method != 'POST':
    # Initial request; pre-fill form with current song info.
    producers = []
    for producer in song.producer.all():
        producers.append(producer.name)


    data = {'artist':song.artist.name, 'producer':", ".join(producers),
            'label':song.label.name}
    form = AddSongForm(instance=song, initial=data)

Это работает нормально, если объект 'label' не равен 'None' (что возможно, потому что это необязательно), и в этом случае я получаю следующее сообщение об ошибке:

AttributeError at / great_songs / edit_song / 727 / Объект 'NoneType' не имеет атрибута 'name'

Как сделать метку предварительного заполнения формы django ТОЛЬКО если она НЕ является объектом 'NoneType'?

1 Ответ

0 голосов
/ 05 января 2019

Вы можете "пропатчить" словарь, если label не None:

data = {'artist':song.artist.name, 'producer':", ".join(producers)}
if <b>song.label is not None</b>:
    data['label'] = song.label.name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...