Как заставить get_or_create () сохранить объект, даже если переданный объектный атрибут не существует - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть функция:

podcast_instance = Show.objects.get_or_create(title=parsed_podcast.title
                                            day_published=parsed_podcast.day_published     )

Он получает данные от переданного объекта (parsed_podcast). Он имеет большое количество атрибутов, в зависимости от подкаста, некоторые есть, а некоторые нет. У меня есть много источников данных, передаваемых в объект 'Podcast', поэтому я хотел бы, чтобы моя функция сохранила то, что доступно, и если ничего не доступно, или 'объект parsed_podcast не имеет атрибута x', то просто сохранить ' ничего "в этот атрибут и продолжать. Модель Show позволяет этим атрибутам не иметь значения.

Однако get_or_create просто генерирует AttributeError и останавливается, а если я помещаю его в блок Try и печатаю ошибку следующим образом:

try:
        podcast_instance = Show.objects.get_or_create(title=parsed_podcast.title)

except AttributeError:
     Exception

Это все еще не сохраняет данные. Как я могу создать объект и просто сохранить то, что доступно?

1 Ответ

0 голосов
/ 17 апреля 2019

AttributeError потому что вы обращаетесь к кортежу, возвращенному get_or_create, а не к объекту.

Использование:

podcast_instance, created = Show.objects.get_or_create(title=parsed_podcast.title
                  day_published=parsed_podcast.day_published)

и ты в порядке. 1009 * Docs *

...