Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2010 11:06:35

al
От:
Зарегистрирован: 2010-01-28
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Покритикуйте правильность моделей

Приветствую, сообщество!

Помогите правильно написать модели для следующего задания:
Имеется 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')



Отредактировано (Янв. 28, 2010 11:07:46)

Офлайн

#2 Янв. 28, 2010 11:32:38

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Покритикуйте правильность моделей

al
Навоял следующее, но мне кажется что это не то:
Что конкретно вам кажется?



Офлайн

#3 Янв. 28, 2010 13:43:22

al
От:
Зарегистрирован: 2010-01-28
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Покритикуйте правильность моделей

Daevaorn, не могу понять как лучше быть с Item(перечнем товаров) и Report(отчетами менеджеров)



Офлайн

#4 Янв. 31, 2010 20:17:55

magasoft
От:
Зарегистрирован: 2009-12-20
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Покритикуйте правильность моделей

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version