繁体   English   中英

如何使用模型的功能?

[英]How can I use the Model's function?

我有一个TypeModel模型,其中有一个:

class TypeModel(models.Model):
    name = models.CharField(max_length=22)
    type = models.CharField(max_length=12)
    ch = models.CharField(max_length=44, null=True)

    def print(self, name, type):
        t = TypeModel.objects.create(name=name, type=type)
        print('success - ' + t.name)

我想这样调用print方法:

class TypeModelCreateAPIView(APIView):
    permission_classes = [AllowAny]
    def post(self, request):

        TypeModel.print() # Can I invoke like this
        return Response(status=HTTP_200_OK, data='')

我是否可以像这样调用模型的功能? 如果不是,如何实现模型的Class方法?

您可以使用staticmethod:

@staticmethod
def print(name, type):
    t = TypeModel.objects.create(name=name, type=type)
    print('success - ' + t.name)

是的,这可以通过staticmethod注释完成

class TypeModel(models.Model):
    name = models.CharField(max_length=22)
    type = models.CharField(max_length=12)
    ch = models.CharField(max_length=44, null=True)

    @staticmethod
    def print(name, type):
        t = TypeModel.objects.create(name=name, type=type)
        print('success - ' + t.name)    

请注意,静态方法没有隐式self作为第一个参数。

当前print被定义为实例方法。 您必须创建TypeModel实例才能调用它。 喜欢:

model = TypeModel()
model.print()

或者您可以使用@staticmethod装饰器:

@staticmethod
def print(name, type):
    t = TypeModel.objects.create(name=name, type=type)
    print('success - ' + t.name)  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM