【发布时间】:2021-05-30 20:33:39
【问题描述】:
我要做的是在 Django 模型中的 Actor 表中保存多个抓取的数据(演员名称)。
到目前为止,我已经编写了下面的 for 循环来实现这个目标,但它只保存了最后一个对象。
class Actor(models.Model):
name = models.CharField(max_length=50)
url = models.URLField()
def __str__(self):
return self.name
def save(self, *args, **kwargs):
i = 0
for num in range(5):
title, year, actor_list = scraper(self.url)
self.name = actor_list[i]
super().save(*args, **kwargs)
i += 1
我从表单中的用户那里获取 URL,然后保存表单并将其发送到我的模型,然后开始抓取。
我在 scraper() 函数中抓取 5 个演员名称并将它们附加到 actor_list。
但是当我尝试在保存功能下保存actor_list时,它只保存了我认为会覆盖之前保存的对象的第5个actor。
我的 for 循环有问题吗?还是我应该为此彻底改变我的方法?
我还希望使用 Actor.objects.get_or_create() 来保存对象以跳过已经存在的对象,但我不知道如何以及在哪里。
如果有人可以帮助我,我将不胜感激。
【问题讨论】: