Как сделать динамическое поле в Django models
Как я могу сделать поле Count, равное кол-ву привязанных к данному объекту модели Checks товаров из ManyToMany Field?
models.py:
class Tovar(models.Model):
idtov = models.CharField("ID товара", max_length=30, default="default")
name = models.CharField("Название товара", max_length=400, default="default")
def __str__(self):
return self.name
class Meta:
verbose_name = "Товар"
verbose_name_plural = "Товары"
ordering = ('id',)
class Checks(models.Model):
iddoc = models.CharField("Id Чека", max_length=30)
tovars = models.ManyToManyField("Tovar", verbose_name="Товары в чеке", related_name="tovar")
createtime = models.DateTimeField("Дата", auto_now_add=True)
# count = ... Будем брать из ManyToMany
summa = models.FloatField()
def __str__(self):
return f"Id чека: {self.iddoc}"
class Meta:
verbose_name = "Чек"
verbose_name_plural = "Чеки"
ordering = ("createtime",'id')
Мне нужно поле в Checks с кол-вом привязанных к данному объекту эл-ов модели Tovars.
Ответы (1 шт):
Автор решения: Nonen_Hook
→ Ссылка
Вы можете запрашивать количество связанных элементов при реализации отображения ваших данных. Если требуется, в административной панели также можно вывести количество связанных элементов, если в качестве поля указать функцию. Функцию нужно определить прямо в модели.
Пример функции:
class Checks(models.Model):
# ваши поля...
def tovars_count(self):
return self.tovars.count()
Пример поля в админке:
list_fields=['tovars_count', ]