簡體   English   中英

django save() 在 sqlite 中不起作用

[英]django save() doesn't effect in sqlite

我有一個 scrapy 項目,想將檢索到的數據保存在 sqlite 中。 我在視圖文件中寫了 scrapy 蜘蛛。 你可以在下面看到它的一部分。

這是views.py文件:

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文件:

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()不起作用?

我有同樣的問題,你必須引用一個 model,保存它,然后引用另一個。 您的代碼可以像這樣更好:

    src = Source.objects.create(name=self.name)
    ctlg = Catalogue(city=city, price=price, datetime=date, source=self.name, 
                     source_token=token)

要在一個步驟中創建和保存 object,請使用create()方法。 https://docs.djangoproject.com/en/stable/topics/db/queries/#creating-objects

對於目錄的源屬性,您應該傳遞 model 參考,而不是 model 名稱:

..., source = src, ...

要創建實例並保存它,您可以使用以下代碼段:

src = Source(name=self.name)
src.save()

與目錄 model 類似。 對於外鍵,您需要在源字段中傳遞 src 的實例,這將起作用。 參考鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM