我有一个带有2个字段的模型。我想在创建一行时给它们默认值。此默认值是一种取决于时间的ID。此ID不应更改。即,当行上发生后续更新时,不应应用默认值。
我正在尝试使用update_or_create,但创建&时会出现默认值更新不一样。如何在更新时创建和忽略这些ID?
我指的是answer,但没有运气。
编辑:
以下是参考代码:
型号:
def post(self, request, format=None):
UsersModel.objects.update_or_create(a="a_val",defaults={"b":"b_val"})
查看:
b
在这里,我想要id&在创建行时获取默认值的键。在更新时,只有suspended
才会更新,如上面的代码所示。
答案 0 :(得分:0)
通过覆盖models.Model的保存功能可以实现同样的目的,以确保在创建模型的情况下,id和key被赋予一个值(默认)。
class UsersModel(models.Model):
id = models.CharField(db_column="id", max_length=25, primary_key=True)
key = models.CharField(db_column="key", max_length=100)
a = models.CharField(db_column="a",max_length=25, null=True, blank=True)
b = models.BigIntegerField(db_column="b", null=True, blank=True)
def save():
if not self.id:
self.id=get_default('id')
if not self.key:
self.key=get_default('key')
super(UsersModel, self).save(*args, **kwargs)
这将确保在您第一次调用save时创建和更新时,会在保存到db中之前为这些变量分配一个默认值。