【问题标题】:Extra parameter for Django modelsDjango 模型的额外参数
【发布时间】:2023-03-11 06:41:01
【问题描述】:

使用 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(name="Bill Gates",extra_param=True).save() # now triggers the task 1
Foo(name="Bill Gates").save() # now triggers the task 2

如何做到这一点?我也愿意接受任何其他建议:)

谢谢

【问题讨论】:

    标签: python django wrapper django-forms


    【解决方案1】:

    您可以在模型中定义非持久性字段。

    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"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 2014-09-08
      相关资源
      最近更新 更多