首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django Rest :仅在创建

Django Rest :仅在创建
EN

Stack Overflow用户
提问于 2016-10-18 10:52:19
回答 1查看 2K关注 0票数 0

我有一个带两个字符的模型。在创建行时,我希望给出它们的默认值。这个默认值是一种ID,取决于时间。这个ID不应该改变。也就是说,当行上发生后续更新时,不应应用默认值。

我正在尝试使用创建,但是,在创建和更新时,缺省值是不一样的。如何只在创建时放置这些I,而在更新时忽略这些I?

我指的是这个回答,但没有运气。

编辑:

以下是供参考的守则:

型号:

代码语言:javascript
复制
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)

视图:

代码语言:javascript
复制
def post(self, request, format=None):
    UsersModel.objects.update_or_create(a="a_val",defaults={"b":"b_val"})

在这里,我希望id &键在创建行时采用默认值。当它被更新时,只有b应该得到更新,如上面的代码所示。

EN

回答 1

Stack Overflow用户

发布于 2016-10-18 12:22:02

可以通过对models.Model的保存函数进行反编译来实现同样的目的,以确保在您的情况下,如果要创建模型,id和键就会被赋予一个值(默认值)。

代码语言:javascript
复制
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)

这将确保在创建和更新时,在第一次调用保存时,在将这些变量保存到db之前,为这些变量分配一个默认值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40106257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档