Django Rest:模型字段默认值仅在创建时

时间:2016-10-18 10:52:19

标签: django django-rest-framework

我有一个带有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才会更新,如上面的代码所示。

1 个答案:

答案 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中之前为这些变量分配一个默认值。