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