当前位置: 代码迷 >> python >> 如何使用模型的功能?
  详细解决方案

如何使用模型的功能?

热度:59   发布时间:2023-07-16 09:59:35.0

我有一个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)

是的,这可以通过

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)  
  相关解决方案