Бюджет:
1200 руб
Есть 5 моделей:
#Оплата
class Payroll(models.Model):
site_nick = models.CharField('Ник на сайте', max_length=30)
site = models.PositiveIntegerField('ИД сайта')
money = models.PositiveIntegerField('Денежные единицы')
#Привязка ников на сайте
class Mapping(models.Model):
user=models.ForeignKey(
Profile,
related_name='user_mapping',
on_delete=models.CASCADE,
)
site=models.ForeignKey(
Site,
related_name='site_mapping',
on_delete=models.CASCADE,
)
site_nick=models.CharField('Ник на сайте', max_length=30)
#Города
class City(models.Model):
city_name=models.CharField('Название города', max_length=30)
#Cайты
class Site(models.Model):
site_name=models.CharField('Название сайта', max_length=20)
#Здесь будет храниться формула расчета. Например *100/2. Это значит, что значение money из модели Payroll для этого сайта, нужно будет делить 100 и умножить на 2
formula = models.CharField('Формула расчета', max_lenght=10)
#Профили
class Profile(AbstractUser):
nickname=models.CharField('Ник', max_length=20,blank=True,null=True)
city = models.ForeignKey(
City,
related_name='user_city',
on_delete=models.PROTECT,
null = True,
blank=True,
)
Задача: написать код для views.py и шаблона, который будет выводить таблицу с данными отфильтрованными по городу (id города будет указан в URL). Возможно, предложенный метод неправильный. Можно переделать логику (изменить код models.pay).
Заголовок: Никнейм, Перечисление Site.site_name, Итого
Данные: Profile.nickname, Payroll.money(для каждого сайта по этому Profile, если данных нет стоит 0*), сумма всех Payroll.money для каждого сайта с примененной Site.formula для данного Profile
Внизу поле с суммой по этому городу
---------
*Payroll.objects.get(site_nick=Mapping.objects.get(user=Profile.o bjects.get(pk=1), site=1).site_nick).money (код для выборки данных из Payroll без учета формулы, для понимания задачи)
В Mapping есть записи не для всех сайтов и не для всех пользователей