Задать вопрос
maxclax
@maxclax

Как вызвать метод по связаной таблице?

Имею две модели. User и:

class Partnership(models.Model):
    class Meta:
        verbose_name = _('partnership.model.verbose_name')
        verbose_name_plural = _('partnership.model.verbose_name_plural')

    # владелец записи
    user = models.ForeignKey(User, verbose_name=_('partnership.model.user'))

    def get_amount_total(self):
        if self.transaction_set.filter(is_approved=True).count():
            # получаем суммирование всех транзакций
            data = self.transaction_set.filter(is_approved=True).aggregate(amount_total=models.Sum('amount'))
            return data['amount_total']
        else:
            return 0


Подскажите такой момент: могу ли я через User обратитса к методу get_amount_total? В моем понимании должно быть так User.partnership_set.get_amount_total() но так не работает. Пробовал ставить декоратор @property не работает.
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
xSkyFoXx
@xSkyFoXx
Вам надо явно унаследовать в User метод get_amount_total:

super(Partnership, self).get_amount_total()

Так как это класс фреймворка, переписывать его некрасиво. Надо сделать через прокси-класс или миксин (выбирайте такой шаблон проектирования, который вам нравится больше).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽
Крона Лабс Екатеринбург
от 200 000 ₽