models.py
class Contest(models.Model):
sport = models.CharField(max_length=200)
class Player(models.Model):
name = models.CharField(max_length=200)
contest = models.ManyToManyField(Contest)
class Entry(models.Model):
num_entries = models.IntegerField()
player = models.ForeignKey('Player',on_delete=models.CASCADE)
Как я могу найти поиск игрока на основе спорта, а затем запустить функцию агрегата в записи прибыли в таблице «Записи». Это был тип подхода, который я хотел взять:Запуск функции агрегата по таблице внешнего ключа
from .models import *
from django.db.models import Avg
player = Player.objects.filter(name='Player A').filter(contest__sport='nba').aggregate(Avg(entries__num_entries))
Ваша модель «Записи» не имеет большого смысла. У игрока уже есть несколько записей через обратное отношение внешних ключей, поэтому нет необходимости в поле типа 'num_entries', и кроме этого он не хранит никакой дополнительной информации. Что представляет собой эта модель? Модель обычно не является чем-то множественным, потому что она определяет одну строку в таблице. Таблица - это ваши записи, но модель определяет одну запись. Так что это имя должно быть «Entry». – trixn
Мои модели содержат больше полей, но для простоты я опубликовал минимальный минимум. Ваше право, это должен быть Entry, а не записи. –
Но почему модель 'Entry' должна иметь поле' num_entries'? Это бессмысленно. Пожалуйста, объясните, что представляет собой запись. – trixn