Django. Где поместить пользовательские методы в models.py? - PullRequest
1 голос
/ 15 марта 2020

Я поместил некоторые логики c в пользовательские методы в моей модели.
Я сделал это для использования этих методов в представлениях

Моя модель:

class Quiz(models.Model):
    # Some fields..

    # And some example methods that contain a logic
    def get_manage_questions_url(self):
        return reverse('manage-questions', kwargs={'slug': self.slug})

    def get_likes_count(self):
        return self.likes.count()

    def get_completed_count(self):
        return QuizManager.objects.filter(quiz=self, completed=True).count()

    def like_quiz(self, quiz, user):
        data = {}

        if user in quiz.likes.all():
            quiz.likes.remove(user)
            data['liked'] = False
        else:
            quiz.likes.add(user)
            data['liked'] = True

        data['likes'] = quiz.get_likes_count()

        return data

    def increase_views(self):
        self.views += 1
        self.save(update_fields=('views',))

У меня есть вопрос:
Нужно ли мне писать все пользовательские методы в модели или мне нужно поместить подобные методы в менеджер типа QuizManager (models.Manager) и определить атрибут "objects" в модели викторины?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...