问题描述
我有一个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方法?
1楼
您可以使用staticmethod:
@staticmethod
def print(name, type):
t = TypeModel.objects.create(name=name, type=type)
print('success - ' + t.name)
2楼
是的,这可以通过
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
作为第一个参数。
3楼
当前print
被定义为实例方法。
您必须创建TypeModel
实例才能调用它。
喜欢:
model = TypeModel()
model.print()
或者您可以使用@staticmethod
装饰器:
@staticmethod
def print(name, type):
t = TypeModel.objects.create(name=name, type=type)
print('success - ' + t.name)