Как пропустить RSS-каналы, в которых отсутствуют определенные атрибуты

У меня есть список RSS-каналов, которые я хочу разобрать в своем Django-приложении. Некоторые из них содержат все нужные мне атрибуты, другие не содержат некоторых атрибутов. Те, в которых отсутствуют нужные мне атрибуты, продолжают аварийно завершать мою программу. Я продолжаю получать такие ошибки

raise AttributeError("object has no attribute '%s'" % key)
AttributeError: object has no attribute 'summary'

Моя модель

class Posts(models.Model):
    title = models.CharField(max_length=500, verbose_name='Post Title', null=False)
    link = models.URLField(max_length=500, verbose_name='Post Link', null=False)
    summary = models.TextField(verbose_name='Post Summary', null=False)
    image_url = models.URLField(max_length=500, null=False, verbose_name='Post Image URL', default='')
    slug = models.SlugField(unique=True, max_length=500, null=False)
    tags = TaggableManager()
    pub_date = models.DateTimeField(verbose_name='Date Published', null=False)
    guid = models.CharField(max_length=500, verbose_name='Guid Code', null=True)
    feed_title = models.CharField(max_length=500, verbose_name='Feed Channel Title', null=False)
    feed_description = models.TextField(verbose_name='Feed Channel Description', null=False)
    date_created = models.DateField(auto_now_add=True, verbose_name='Date Created', null=False)
    last_modified = models.DateField(auto_now=True, verbose_name='Last Modified', null=False)
    source = models.ForeignKey(Source, on_delete=models.CASCADE, verbose_name='Source', null=False)
    category = models.ForeignKey(Categories, on_delete=models.CASCADE, verbose_name='Category', null=False)

    def __str__(self):
        return f"{self.title} - {self.feed_title}" 

    class Meta:
        verbose_name_plural = 'Posts'

Моя функция сохранения RSS

if not Posts.objects.filter(slug=post_slug).exists():
            try:
                post = Posts.objects.get(slug=post_slug)

            except Posts.DoesNotExist:
                post = Posts(
                    title = post_title,
                    link = post_link,
                    summary = post_summary,
                    image_url = image_link,
                    slug = post_slug,
                    pub_date = date_published,
                    guid = item.guid,
                    feed_title = channel_feed_title,
                    feed_description = channel_feed_desc,
                    source_id = selected_source_id,
                    category_id = selected_category_id
                )
                post.save()

                for i in range(len(article_list)):
                    post_tags = post.tags.add(article_list[i])

Помощь в этом вопросе была бы очень признательна.

Один из способов - проверить, пуст ли атрибут, затем дать ему пустой/дефолтный объект, который требует ваше поле модели:

title = post_title if post_title else '',
....
pub_date = date_published if date_published else datetime.now(),
....
Вернуться на верх