如何在每次运行django代码时创建新的postgreSQL行以保存数据
我现在有一个疑问,当我执行我的脚本时,我是否能够将它保存在一行中 My models.py有两个表格(或类)页面和类别 返回自己的标题 此代码是从我的视图中剪下来的。py如何在每次运行django代码时创建新的postgreSQL行以保存数据,django,postgresql,django-orm,web-development-server,Django,Postgresql,Django Orm,Web Development Server,我现在有一个疑问,当我执行我的脚本时,我是否能够将它保存在一行中 My models.py有两个表格(或类)页面和类别 返回自己的标题 此代码是从我的视图中剪下来的。py 当我再次或每次执行它时,它会覆盖同一行,这与我使用它的方式是有道理的 如何在每次运行脚本时创建新行,以便在新行中保存新数据,而不是覆盖同一行 我曾想过每次运行脚本时使用python“random”从列表中选择一个随机字母(例如g),然后加入它以获得类似“g.price”的内容,但这有26个字母的限制,随机但不是唯一的,因此
当我再次或每次执行它时,它会覆盖同一行,这与我使用它的方式是有道理的 如何在每次运行脚本时创建新行,以便在新行中保存新数据,而不是覆盖同一行 我曾想过每次运行脚本时使用python“random”从列表中选择一个随机字母(例如g),然后加入它以获得类似“g.price”的内容,但这有26个字母的限制,随机但不是唯一的,因此可以生成相同的字母(尽管我可以对此进行“if”检查)
是否有一种简单而正确的方法来执行此操作?我不确定为什么默认情况下不插入它们,但您可以强制Django这样做。 官方文件表明: 在某些罕见的情况下,必须能够强制save()方法执行SQL插入,而不是退回到执行更新。反之亦然:如果可能,更新,但不插入新行。在这些情况下,可以将force_insert=True或force_update=True参数传递给save()方法。显然,传递这两个参数是错误的:不能同时插入和更新
我不确定默认情况下为什么不插入它们,但您可以强制Django这样做。 官方文件表明: 在某些罕见的情况下,必须能够强制save()方法执行SQL插入,而不是退回到执行更新。反之亦然:如果可能,更新,但不插入新行。在这些情况下,可以将force_insert=True或force_update=True参数传递给save()方法。显然,传递这两个参数是错误的:不能同时插入和更新 Models.py:-
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=128, unique=True)
def __unicode__(self):
return self.name
class Page(models.Model):
name = models.ForeignKey(Category)
title = models.CharField(max_length=128)
url = models.URLField()
views = models.IntegerField(default=0)
price = models.IntegerField(default=0)
def __unicode__(self):
views.py:-
如果要更新特定类别的页面,请执行以下操作:-
a = Category.objects.get(name=nameField) #Fetch reference object for which category name you want to add page
x = India(symb)
b = Page.objects.filter(name=a).update(title=symb,price = float(x['Price']))
x = India(symb)
a = Category.objects.create(name = x['Company Name'])
b = Page.objects.create(name=a,title=symb,price = float(x['Price']))
b.save()
如果要添加新类别和页面,请执行以下操作:-
a = Category.objects.get(name=nameField) #Fetch reference object for which category name you want to add page
x = India(symb)
b = Page.objects.filter(name=a).update(title=symb,price = float(x['Price']))
x = India(symb)
a = Category.objects.create(name = x['Company Name'])
b = Page.objects.create(name=a,title=symb,price = float(x['Price']))
b.save()
Models.py:-
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=128, unique=True)
def __unicode__(self):
return self.name
class Page(models.Model):
name = models.ForeignKey(Category)
title = models.CharField(max_length=128)
url = models.URLField()
views = models.IntegerField(default=0)
price = models.IntegerField(default=0)
def __unicode__(self):
views.py:-
如果要更新特定类别的页面,请执行以下操作:-
a = Category.objects.get(name=nameField) #Fetch reference object for which category name you want to add page
x = India(symb)
b = Page.objects.filter(name=a).update(title=symb,price = float(x['Price']))
x = India(symb)
a = Category.objects.create(name = x['Company Name'])
b = Page.objects.create(name=a,title=symb,price = float(x['Price']))
b.save()
如果要添加新类别和页面,请执行以下操作:-
a = Category.objects.get(name=nameField) #Fetch reference object for which category name you want to add page
x = India(symb)
b = Page.objects.filter(name=a).update(title=symb,price = float(x['Price']))
x = India(symb)
a = Category.objects.create(name = x['Company Name'])
b = Page.objects.create(name=a,title=symb,price = float(x['Price']))
b.save()
你是说我不需要使用新变量将其保存在新行中?例如:p.title-->进入第1行我是否应该使用a.title-->将其保存在另一行?@sujithjohn,请将您的模型发布在此处?也许主键有问题,你是说我不需要使用新变量将其保存在新行中?例如:p.title-->进入第1行我是否应该使用a.title-->将其保存在另一行?@sujithjohn,请将您的模型发布在此处?也许主键有问题,我想这会有用的,我今天就试试。我也给出了a.save()和b.save(),对吗?每次我添加一个新类别,它都会保存到一个新行,而不会覆盖?谢谢!那有帮助!!我想这会管用的,我今天就试试。我也给出了a.save()和b.save(),对吗?每次我添加一个新类别,它都会保存到一个新行,而不会覆盖?谢谢!那有帮助!!