Ale*_*lex 5 python django django-models
我在 Django 中有一个模型,其中一些数据经常无效。通常我会调用clean()我为处理这些情况而编写的方法,但是,get_or_create()似乎save()在我有机会调用clean().
在get_or_create()尝试写入数据库之前如何清理我的数据?
这是我的模型的相关部分:
class Article(models.Model):
optional_attribute = models.CharField(max_length = 250)
def clean(self):
if not self.optional_attribute:
self.optional_attribute = 'Default'
Run Code Online (Sandbox Code Playgroud)
重写该save方法可能更合适:
class Article(models.Model):
optional_attribute = models.CharField(max_length = 250)
def save(self, *args, **kwargs):
if not self.optional_attribute:
self.optional_attribute = 'Default'
super(Article, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用pre_save信号处理程序:
from django.db.models.signals import pre_save
class Article(models.Model):
optional_attribute = models.CharField(max_length = 250)
@classmethod
def pre_save_handler(cls, sender, instance, **kwargs):
if not instance.optional_attribute:
instance.optional_attribute = 'Default'
pre_save.connect(Article.pre_save_handler, sender=Article)
Run Code Online (Sandbox Code Playgroud)
如果您想保留您的clean方法,您可以简单地使用其中一种技术并clean从内部调用您的方法。
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |