[英]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.