django 从一个类调用另一个类的CURD操作

kqlmhetl  于 2023-03-20  发布在  Go
关注(0)|答案(2)|浏览(159)

我有一个Django CRUD的类包含create,update,和delete函数我可以在另一个类中使用first的create,update函数吗create函数
来自示例:

class A(viewsets.ModelViewSet):

     def create(self, request, *args, **kwargs):
     some code 
     
     def update(self, request, *args, **kwargs): 
     some code

现在您可以看到,第一个类A具有create和update函数,现在我有另一个类B,它也具有create函数,现在如何使用调用第一个类A的create函数

class B(viewsets.ModelViewSet):

     def create(self, request, *args, **kwargs):
     some code
0md85ypi

0md85ypi1#

可以,您可以从类B的create函数调用类A的create和update函数。为此,您可以创建类A的示例,然后调用其create和update函数。
下面是一个示例,说明如何做到这一点:

class B(viewsets.ModelViewSet):
    def create(self, request, *args, **kwargs):
        # some code
        
        # create an instance of class A
        a = A()
        
        # call the create function of class A
        a.create(request, *args, **kwargs)
        
        # call the update function of class A
        a.update(request, *args, **kwargs)
        
        # some more code

请注意,您需要向类A的create和update函数传递与传递给类B的create函数相同的参数。此外,请确保类A的create和update函数在从另一个类调用时能够正常工作。

5w9g7ksd

5w9g7ksd2#

首先,我同意尤瑟夫的回答,它应该是有效的。
另一种选择是继承:

class B(A):  # let B inherit from A
    def create(self, request, *args, **kwargs):
        print("here your logic")
        super().create(request, *args, **kwargs)  # call the function of parent class
        print("some more logic")

当然,继承沿着更多的优点,但如果它不适合你的需要,这些也可能是缺点。因为通过从A继承,你的类B现在也有了和A相同的update函数。

相关问题