Django model manytomany field count occurrence
models.py
class Region(models.Model):
name = models.CharField(blank=False, unique=True)
count = models.IntegerField(blank=True, null=True) # This should be the occurrence count in ETF
class ETF(models.Model):
ticker = models.CharField()
region = models.ManyToManyField(Region, blank=True)
Пример: Если в модели ETF 100 объектов ETF имеют в качестве региона США, то поле count в объекте U.S.A. в модели Region должно быть равно 100.
Как автоматически обновлять поле count в Region Model каждый раз, когда в базе данных происходят изменения? Извините, если вопрос дублируется,
Я просто не могу найти ключевые слова для поиска решения.
Вам не нужно считать количество ETF
для Region
, вы можете подсчитать это при необходимости с помощью .annotate(…)
[Django-doc]:
from django.db.models import Count
Region.objects.annotate(
count_etf=Count('etf')
)
У Region
, возникающих из этого кверисета, будет дополнительный атрибут .count_etf
, содержащий количество связанных ETF
объектов для этого Region
.
Если ETF
связан с несколькими Region
регионами, то все эти регионы будут считать его за один.