如何修改Django的Manager QuerySet create()方法?

时间:2015-11-26 21:06:48

标签: django

我有两个模型InvoiceInvoiceItems,它们具有一对多的关系。

在整个代码库中,我们使用InvoiceItems对象为给定的Invoice创建Manager

invoice.invoice_items.create(...)

问题是,现在我们在尝试创建InvoiceItem之前必须进行验证,并且通过代码库,重构所有创建部分将是一个令人头疼的问题。

我想知道是否有办法覆盖创建方法本身,还是我们应该选择模型的save()

1 个答案:

答案 0 :(得分:0)

要修改Manager的方法,您需要创建自己的方法。鉴于以下情况:

# models
class MyModel(models.Model):
    # ... fields
    objects = MyManager()

class MyManager(models.Manager):

    def create(self):
        # write your own code here
        pass

不要担心其他方法(filterdelete等),所有这些方法都会正常工作。

您可以找到有关自定义管理员here

的更多信息