我将使人们更好地理解我提出的问题(How to store a dictionary in a Django database model's field?):
我有这本字典
sample_dict = [
{'sale_id': 14,
'name': 'Macarena',
'fecha': datetime.date(2021, 3, 11),
'debe': 500.0},
{'sale_id': 14,
'name': 'Macarena',
'fecha': datetime.date(2021, 4, 11),
'debe': 500.0},
{'sale_id': 15,
'name': 'Yamila',
'fecha': datetime.date(2021, 4, 14),
'debe': 2000.0}
]
我希望将其存储在Django数据库(SQLite3)中,如下所示:
但是在将这个dict附加到DB之前,我希望清除数据库并避免重复的值(或者在将dict附加到DB之后删除重复的值)
如果我选择删除重复项,我应该从“sale_id”、“name”、“fecha”和“debe”列中删除重复项,而不仅仅是从“sale_id”中删除重复项,因为我得到了许多编号相同但日期不同的“sale_id”(“fecha”)
我尝试过这个方法,但每次运行“objects.create”时,我都会在数据库中得到重复的值:
class Creditos1(models.Model):
sale_id = models.IntegerField(default=0)
name = models.CharField(max_length=150)
fecha = models.DateTimeField(default=datetime.now)
debe = models.IntegerField(default=0)
for i in range(0,len(h)):
Creditos1.objects.create(name=h[i]['name'], sale_id=h[i]['sale_id'], fecha=h[i]['fecha'], debe=h[i]['debe'])
非常感谢
每次运行代码时,都会创建新对象,不管它们是否已在数据库中。您没有提供唯一的ID
要删除所有对象,只需运行
要检查数据库中是否已存在数据,以避免多次添加数据,例如,可以使用快捷方式
编辑:一些技巧(主题外)
顺便说一句,如果在python中循环列表,则有一种较短的方法:
如果键与要传递的参数完全相同,则可以使用
综合起来:
运行delete命令或(重新)移动sqlite文件后,应避免多次存储相同的数据
相关问题 更多 >
编程相关推荐