如何使用模型的功能?

时间:2018-10-04 12:39:20

标签: python django django-rest-framework

我有一个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方法?

3 个答案:

答案 0 :(得分:0)

您可以使用staticmethod:

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

答案 1 :(得分:0)

是的,可以使用staticmethod annotation

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作为第一个参数。

答案 2 :(得分:0)

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

model = TypeModel()
model.print()

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

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