我有一个看起来像这样的模型。
import uuid
from django.db import models
class TemplateId(models.Model):
id = models.SmallAutoField(primary_key=True, serialize=False, verbose_name='ID')
template_name = models.CharField(max_length=255, default="")
template_id = models.UUIDField(max_length=255, default=uuid.UUID, unique=True)
def __str__(self):
return str(self.template_name)
class Meta:
ordering = ('-id',)
我有另一个函数/代码,我在其中调用 API 来获取template_name
并template_id
以 dB 存储它。但是每次当我得到 API 的响应时,我都想覆盖整个表(everytime deleting old record and then adding the new records
)
目前我正在这样做:
def fetch_template_id():
api_response = # calling the API
for template_id in api_response:
obj = TemplateId(template_id=template_id["id"], template_name=template_id["name"])
obj.save()
为了覆盖,我尝试在我的TemplateId
模型中覆盖 save 方法,如下所示,但它不起作用
def save(self, *args, **kwargs):
super(TemplateId, self).save(*args, **kwargs)
由于数据是通过获取 API 响应保存在模型字段中的,因此下次从 API 响应中接收到相同的数据时,会抛出 dB 中的重复数据错误。 如何使用每个 API 调用覆盖所有 dB 字段?