Extra parameter for Django models

旧巷老猫 提交于 2019-12-11 07:05:08

问题


With Django models, I want to achieve this:

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

And while crating Foo I want to pass such as

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

How can this be done? I am also open to any other suggestions :)

Thanks


回答1:


You can define non-persistent fields in your model.

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

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

Alternatively, you can do:

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

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


来源:https://stackoverflow.com/questions/2344994/extra-parameter-for-django-models

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!