Как создать значение MAX для столбца, ссылающегося на столбец другой таблицы - PullRequest
0 голосов
/ 07 мая 2020
class Agent(models.Model):
nickname = models.CharField(max_length=64)
club_agent_id = models.IntegerField()
club = models.ForeignKey(
    Club, on_delete=models.CASCADE, related_name="agents")
**rakeback** = models.DecimalField(max_digits=3, decimal_places=3)
user = models.ForeignKey(
    User, on_delete=models.CASCADE, related_name="agents")

def __str__(self):
    return f"{self.nickname} - {self.club} - {self.rakeback}"


class Account(models.Model):
    nickname = models.CharField(max_length=64)
    club_account_id = models.IntegerField()
    **rakeback** = models.DecimalField(max_digits=3, decimal_places=3)
    club = models.ManyToManyField(Club, blank=True, related_name="accounts")
    agent = models.ManyToManyField(Agent, related_name="accounts")

def __str__(self):
    return f"{self.club_account_id} - {self.nickname}"

Здесь программа создаст Агента, и Аккаунт будет привязан к нему. Аккаунт принадлежит агенту. У агента много учетных записей. При создании Агента значение рейкбека задает Пользователь.

Как установить MAX для рейкбека на Учетной записи, исходя из значения рейкбека на Агенте?

1 Ответ

0 голосов
/ 07 мая 2020

Вы можете использовать annotate с Max, например:

from django.db.models import Max

accounts =  Account.objects.annotate(rakeback=Max('agent__rakeback'))
print(accounts.values('pk', 'rakeback'))

Вам не нужно хранить поле rakeback в модели Account.

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