Django模型的额外参数

1 投票
1 回答
2669 浏览
提问于 2025-04-15 19:47

我在使用Django模型时,想要实现这个:

class Foo(models.Model):
    name = models.CharField(max_length=50)

    #wrapping the save function, including extra tasks
    def save(self, *args, **kwargs):
        super(Foo, self).save(*args, **kwargs)

            if extra_param:
            ...do task 1
        else:
            ...do task 2

而在创建Foo的时候,我想传入这样的内容:

Foo(name="Bill Gates",extra_param=True).save() # now triggers the task 1
Foo(name="Bill Gates").save() # now triggers the task 2

这该怎么做呢?我也欢迎其他的建议哦 :)

谢谢

1 个回答

9

你可以在你的模型中定义一些不持久化的字段。

class Foo(models.Model):
    name = models.CharField(max_length=50)
    extra_param = False

def save(self, *args, **kwargs):
    ... 
    print self.extra_param

另外,你也可以这样做:

Foo(name="Bill Gates").save(extra_param=True)

def save(self, *args, **kwargs):
    ... 
    print kwargs["extra_param"]

撰写回答