我有一个带两个字符的模型。在创建行时,我希望给出它们的默认值。这个默认值是一种ID,取决于时间。这个ID不应该改变。也就是说,当行上发生后续更新时,不应应用默认值。
我正在尝试使用创建,但是,在创建和更新时,缺省值是不一样的。如何只在创建时放置这些I,而在更新时忽略这些I?
我指的是这个回答,但没有运气。
编辑:
以下是供参考的守则:
型号:
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 post(self, request, format=None):
UsersModel.objects.update_or_create(a="a_val",defaults={"b":"b_val"})在这里,我希望id &键在创建行时采用默认值。当它被更新时,只有b应该得到更新,如上面的代码所示。
发布于 2016-10-18 12:22:02
可以通过对models.Model的保存函数进行反编译来实现同样的目的,以确保在您的情况下,如果要创建模型,id和键就会被赋予一个值(默认值)。
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之前,为这些变量分配一个默认值。
https://stackoverflow.com/questions/40106257
复制相似问题