首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >django save()在sqlite中不起作用

django save()在sqlite中不起作用
EN

Stack Overflow用户
提问于 2021-03-01 15:07:20
回答 2查看 64关注 0票数 1

我有一个scrapy项目,并希望将检索到的数据保存在sqlite中。我在视图文件中写了抓取蜘蛛。你可以在下面看到它的一部分。

这是views.py文件:

代码语言:javascript
复制
class DivarSpider(scrapy.Spider):
    name = "divar"


    def parse_first_page(self, response):
        .
        .
        yield scrapy.Request(url=url, method='GET', callback=self.parse_each_ads)


    def parse_each_ads(self, response):
        .
        .
        .
        src = Source()
        src.name = self.name
        ctlg = Catalogue()
        ctlg.city = city
        ctlg.price = price
        ctlg.datetime = date
        ctlg.source = self.name
        ctlg.source_token = token
        src.save()
        ctlg.save()

这是models.py文件:

代码语言:javascript
复制
class Source(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name


class Catalogue(models.Model):
    source = models.ForeignKey(Source, null=False, on_delete=models.CASCADE)
    city = models.CharField(max_length=100)
    price = models.CharField(max_length=100)
    datetime = models.CharField(max_length=100)
    source_token = models.CharField(max_length=100)

为什么src.save()ctlg.save()不起作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-01 16:41:42

我也有同样的问题,你必须引用一个模型,保存它,然后引用另一个模型。您的代码可以像这样更好:

代码语言:javascript
复制
src = Source.objects.create(name=self.name)
    ctlg = Catalogue(city=city, price=price, datetime=date, source=self.name, 
                     source_token=token)

若要在单个步骤中创建和保存对象,请使用create()方法。https://docs.djangoproject.com/en/stable/topics/db/queries/#creating-objects

对于Catalogue的源属性,您应该传递模型引用,而不是模型名称:

代码语言:javascript
复制
..., source = src, ...
票数 1
EN

Stack Overflow用户

发布于 2021-03-01 15:14:54

在创建实例和保存实例时,您可以使用以下代码片段:

代码语言:javascript
复制
src = Source(name=self.name)
src.save()

目录模型也是如此。对于外键,需要在source字段中传入src的实例,这样就可以了。参考文献链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66417915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档