Django docs仅列出了覆盖save()delete()的示例.但是,我想为我的模型only when they are created定义一些额外的处理.对于任何熟悉Rails的人来说,这相当于创建了一个:before_create型过滤.这个是可能的吗?

推荐答案

重写__init__()将导致在实例化对象的python表示时执行代码.我不知道rails,但:before_created过滤器听起来像是在数据库中创建对象时要执行的代码.如果要在数据库中创建新对象时执行代码,应重写save(),判断对象是否具有pk属性.代码如下所示:

def save(self, *args, **kwargs):
    if not self.pk:
        # This code only happens if the objects is
        # not in the database yet. Otherwise it would
        # have pk
    super(MyModel, self).save(*args, **kwargs)

Django相关问答推荐

如何在Django中更改模型字段名称?

如何在Django中获取标记<;输入>;的';值';属性?

基于令牌的身份验证如何工作?

Django:使用相同的外键在不同的应用程序中 Select 多个列

- 不支持的操作数类型:DateField和DateField

Django 过滤器:过滤隐藏在多层模型 struct 中的对象

在 GoDaddy 上安装 django 站点

Django PositiveIntegerField 中的 0 值?

将 **kwargs 传递给 Django 表单

Django:get_or_create 使用 together_unique 引发重复条目

django.request 记录器没有传播到根目录?

如何在 Django 中向 ChoiceField 添加class?

在 Django 应用程序之间共享模型

django.core.exceptions.ImproperlyConfigured:请求设置 USE_I18N,但未配置设置

导入错误无法在windows环境下导入名称execute_manager

Django - 了解 X-Sendfile

Django查询否定

Django 将多个模型传递给一个模板

它是如何工作的,Django INSTALLED_APPS 的命名约定?

防止 django 管理员转义 html