假设我有以下代码:
class MyModel(models.Model):
...
...
def save(self, *args, **kwargs):
# pre-save edits can go here...
super(MyModel, self).save(*args, **kwargs)
当我创建并保存模型MyModel(blah,blah,blah)时,输入字段之一可能为“ None”。在覆盖的保存方法中,目标是检查字段是否为空,如果为空,则将其更改为其他默认值。
输入字段是args还是kwargs?覆盖save()甚至是执行此操作的正确方法吗?
我在想这样的事情:
def save(self, *args, **kwargs):
if 'username' in args and args['username'] is None:
args['username'] = some_default_value
super(MyModel, self).save(*args, **kwargs)
那么输入参数在哪里?args *或** kwargs,谢谢。
我认为最好pre_save
查看输入值是否为None
:
from django.db import models
from django.db.models.signals import pre_save
from django.dispatch import receiver
class MyModel(models.Model):
field1 = models.TextField()
field2 = models.IntegerField()
@receiver(pre_save, sender=MyModel)
def mymodel_save_handler(sender, instance, *args, **kwargs):
if instance.field1 is None or instance.field1 == "":
instance.field1 = default_value
如果您喜欢覆盖save
方法,则可以model
fields
使用self
def save(self, *args, **kwargs):
if self.username is None:
self.username = some_default_value
super(MyModel, self).save(*args, **kwargs)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句