Пользовательская функция в модели Django

У меня есть модель, и я хочу добавить свою пользовательскую функцию, и когда я создаю объект, эта функция вызывается автоматически.

это моя модель и тестовая функция. это только для тестирования

я хочу, чтобы при создании объекта Like после вызова функции test

я создавал объект Like.
class LikeManager(models.Manager):

    def create(self, *args, **kwargs):
        decrease = kwargs.pop("decrease")
        new_like = self.model(**kwargs)
        new_like.save(decrease=decrease)
        return new_like
class Like(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name=_("user"))
    question = models.ForeignKey(Question,on_delete=models.CASCADE,verbose_name=_("question"))

    objects = LikeManager()
    
    #this function (not printing)
    @property
    def test(self):
        print("Testing")
        return 1

    def save(self, decrease, *args, **kwargs):
        if not self.pk:
            if decrease:
                self.question.save()
            else:
                self.question.point += 1
                self.question.save()

        return super(Like, self).save(*args, **kwargs)

кто может мне помочь?

Если вы хотите запускать функцию тестирования, когда создается подобный объект, почему бы вам просто не поместить функцию тестирования внутрь функции сохранения?

class Like(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name=_("user"))
    question = models.ForeignKey(Question,on_delete=models.CASCADE,verbose_name=_("question"))
    objects = LikeManager()

    def save(self, decrease, *args, **kwargs):
        def test(self):
            print("Testing")
            return 1
        if not self.pk:
            if decrease:
            self.question.save()
            else:
                self.question.point += 1
                self.question.save()
        return super(Like, self).save(*args, **kwargs)

Иначе вам придется вызывать функцию проверки каждый раз после того, как вы создания объекта (например:

a = Like.objects.create(user=request.user,question=q)
a.test()

)

Вернуться на верх