Как я могу использовать функцию модели? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть модель 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='')

Будь яможет вызвать функцию модели, как это?если нет, то как реализовать метод класса модели?

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Да, это можно сделать с помощью аннотации 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 в качестве первого аргумента.

0 голосов
/ 04 октября 2018

В настоящее время print определен как метод экземпляра.Вы должны создать экземпляр TypeModel, чтобы вызвать его.Как:

model = TypeModel()
model.print()

Или вы можете использовать декоратор @staticmethod:

@staticmethod
def print(name, type):
    t = TypeModel.objects.create(name=name, type=type)
    print('success - ' + t.name)  
0 голосов
/ 04 октября 2018

Вы можете использовать staticmethod:

@staticmethod
def print(name, type):
    t = TypeModel.objects.create(name=name, type=type)
    print('success - ' + t.name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...