Помогите правильно написать модели для следующего задания:
Имеется 6 групп стран. Каждая страна может относится к нескольким группам. Отвечать за свою группу будет координатор.
Идея создать таблицу продаж каждой страны. Каждый месяц будут поститься результаты продаж. Менеджер(представитель страны) будет добавлять результаты продаж. Эти результаты будут поститься не сразу, а после того как координатор подтвердит результаты менеджера. Отчет менеджера будет имееть следующий вид. У каждой страны будет свой перечень товаров состоящий из 7 элементов которые они будут продавать и за каждый из них они будут получать определенное количество очков. Причем одни и теже товары могут повторяться у каждой из стран.
Как мне подобные модели создать? Навоял следующее, но мне кажется что это не то:
class Cluster(models.Model):
coordinator = models.ManyToManyField(User, blank=True, null=True, verbose_name=_('Coordinator'))
cluster = models.CharField(_('Cluster'), max_length=30, blank=True)
class Meta:
verbose_name = _('Cluster')
verbose_name_plural = _('Clusters')
class Country(models.Model):
salesmanager = models.ManyToManyField(User, blank=True, null=True, verbose_name=_('Salesmanager'))
country = models.CharField(_('Country'), max_length=30, blank=True)
cluster = models.ForeignKey(Cluster)
image = models.ImageField(_('Image'), blank=True, upload_to='images/flags/')
class Meta:
verbose_name = _('Country')
verbose_name_plural = _('Countries')
class Profile(models.Model):
user = AutoOneToOneField(User, related_name='profile', verbose_name=_('User'))
country = models.ForeignKey(Country)
class Meta:
verbose_name = _('Profile')
verbose_name_plural = _('Profiles')
class Item(models.Model):
name = models.CharField(_('Name'), max_length=200)
points = models.IntegerField(_('Points'), default=0)
cluster = models.ForeignKey(Cluster)
class Meta:
verbose_name = _('Item')
verbose_name_plural = _('Items')
class Report(models.Model):
user = models.ForeignKey(User)
date = models.DateTimeField(_('Date'), auto_now_add=True)
country = models.ForeignKey(Country)
item1 = models.CharField(_('Item1'), max_length=200)
points1 = models.IntegerField(_('Points1'), default=0)
item2 = models.CharField(_('Item2'), max_length=200)
points2 = models.IntegerField(_('Points2'), default=0)
item3 = models.CharField(_('Item3'), max_length=200)
points3 = models.IntegerField(_('Points3'), default=0)
item4 = models.CharField(_('Item4'), max_length=200)
points4 = models.IntegerField(_('Points4'), default=0)
item5 = models.CharField(_('Item5'), max_length=200)
points5 = models.IntegerField(_('Points5'), default=0)
item6 = models.CharField(_('Item6'), max_length=200)
points6 = models.IntegerField(_('Points6'), default=0)
item7 = models.CharField(_('Item7'), max_length=200)
points7 = models.IntegerField(_('Points7'), default=0)
class Meta:
verbose_name = _('Report')
verbose_name_plural = _('Reports')
class Result(models.Model):
date = models.DateTimeField(_('Date'), auto_now_add=True)
country = models.ForeignKey(Country)
points = models.IntegerField(_('Points'), default=0)
class Meta:
verbose_name = _('Result')
verbose_name_plural = _('Results')