Django models Django模型提交而不调用save()
我将上述代码提交到数据库,而不调用Django models Django模型提交而不调用save(),django-models,Django Models,我将上述代码提交到数据库,而不调用save() 如果我要调用save(),我会在数据库中得到两个副本 有什么我需要检查的吗?我看到的代码中没有任何东西可以调用它两次(即使调用了,也不应该提交,因为没有调用save()) 更新:显示模型代码 models.MessageDataset( intent_key=self.intent_key, message_key=self.message_key, message=self.message ) 更新: class
save()
如果我要调用save()
,我会在数据库中得到两个副本
有什么我需要检查的吗?我看到的代码中没有任何东西可以调用它两次(即使调用了,也不应该提交,因为没有调用save()
)
更新:显示模型代码
models.MessageDataset(
intent_key=self.intent_key,
message_key=self.message_key,
message=self.message
)
更新:
class MessageDataset(Standard):
intent_key = models.CharField(
max_length=200,
choices=intents.choices,
db_index=True
)
message_key = models.CharField(
max_length=200,
choices=messages.choices,
db_index=True
)
message = models.ForeignKey(
'InboundMessage',
related_name='message_datasets',
related_query_name='message_datasets',
on_delete=models.PROTECT,
db_index=True
)
def __str__(self):
return f'({self.intent_key}, {self.message_key}, {self.message} [{self.id}])'
class Meta:
unique_together = ('intent_key', 'message_key', 'message')
在上面的代码中,created是false,即使它是第一次创建的
更新:
dataset, created = models.MessageDataset.objects.get_or_create(
intent_key=self.intent_key,
message_key=self.message_key,
message=self.message
)
请显示模型的代码,以及保存两次的代码(包括任何非标准导入)。我已添加了模型代码。我尝试在模型创建代码之前添加了一个print('hello world')语句。我只看到它打印过一次。如果调用save()方法,我的模型会保存两次。什么是标准的?你到底是如何调用
.save()
的呢?标准只是一个有3个时间戳的模型。我不重写save()方法。问题是,即使我没有调用save()方法,模型也会保存。
class Standard(models.Model):
"""
Abstract model with standard fields.
"""
created = models.DateTimeField(
null=False,
blank=False,
auto_now_add=True,
db_index=True
)
updated = models.DateTimeField(
null=True,
blank=True,
auto_now=True,
db_index=True
)
deleted = models.DateTimeField(
default=None,
null=True,
blank=True,
db_index=True
)
class Meta:
abstract = True