Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Базы данных
  • » [Решено] Есть базовая модель. Есть данные, которые нужно добавить в базовую модель, но меняются в зависимости от страны. Как правильно все организовать? [RSS Feed]

#1 Сен. 12, 2015 21:15:56

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

[Решено] Есть базовая модель. Есть данные, которые нужно добавить в базовую модель, но меняются в зависимости от страны. Как правильно все организовать?

Доброго времени суток.

Имеется на данный момент модель такого вида:

class Movie(models.Model):
    name
    original_name
    length
    age_limit
    description

Нужно добавить кассовые сборы, которые зависят от стран СНГ + Мировые сборы.
Поля примерно такие:
    weeks
    weekend_profit
    weekend_ppl
    total_profit
    total_ppl

На данный момент вижу 3 варианта реализации:
1) Добавить все эти поля по странам в базовую модель, что-то вроде
class Movie(models.Model):
    name
    original_name
    length
    age_limit
    description
    #
    weeks_world
    weekend_profit_world
    weekend_ppl_world
    total_profit_world
    total_ppl_world
    #
    weeks_ru
    weekend_profit_ru
    weekend_ppl_ru
    total_profit_ru
    total_ppl_ru
    #
    weeks_ua
    weekend_profit_ua
    weekend_ppl_ua
    total_profit_ua
    total_ppl_ua
# и тд

2) Сделать через наследование базового (он же родительский) класса и запихнуть опять же все поля в подкласс:
class Profit(Movie):
    weeks_world
    weekend_profit_world
    weekend_ppl_world
    total_profit_world
    total_ppl_world
    #
    weeks_ru
    weekend_profit_ru
    weekend_ppl_ru
    total_profit_ru
    total_ppl_ru
    #
    weeks_ua
    weekend_profit_ua
    weekend_ppl_ua
    total_profit_ua
    total_ppl_ua
# и тд.

3) Создавать для каждой страны свой подкласс:
class ProfitWorld(Movie):
    weeks_world
    weekend_profit_world
    weekend_ppl_world
    total_profit_world
    total_ppl_world
    #
class ProfitRu(Movie):
    weeks_ru
    weekend_profit_ru
    weekend_ppl_ru
    total_profit_ru
    total_ppl_ru
    #
class ProfitUA(Movie):
    weeks_ua
    weekend_profit_ua
    weekend_ppl_ua
    total_profit_ua
    total_ppl_ua
# и тд.

Поделитесь пожалуйста опытом, подскажите, как мне быть?

Отредактировано TitanFighter (Сен. 25, 2015 22:54:39)

Офлайн

#2 Сен. 13, 2015 08:17:00

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

[Решено] Есть базовая модель. Есть данные, которые нужно добавить в базовую модель, но меняются в зависимости от страны. Как правильно все организовать?

А вы уверены, что завтра у вас в программе не появится, допустим, Казахстан или Литва?

class Movie(models.Model):
    name
    original_name
    length
    age_limit
    description
class Country(models.Model):
   # Russia
   # ru
   name
   short_name
class Profit(models.Model):
    weeks
    weekend_profit
    weekend_ppl
    total_profit
    total_ppl
    movie = models.ForeignKey(Movie)    
    country = models.ForeignKey(Country, null=True)    # null == world



Офлайн

#3 Окт. 1, 2015 23:00:00

TitanFighter
Зарегистрирован: 2015-06-23
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

[Решено] Есть базовая модель. Есть данные, которые нужно добавить в базовую модель, но меняются в зависимости от страны. Как правильно все организовать?

FishHook, все хотел спросить…
Подскажите, для чего вы добавили short_name? Чтоб использоваться в коде, вместо полного названия страны? В чем преимущество?
Спасибо.

Офлайн

#4 Окт. 2, 2015 05:33:49

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

[Решено] Есть базовая модель. Есть данные, которые нужно добавить в базовую модель, но меняются в зависимости от страны. Как правильно все организовать?

Да это же просто пример, я тут как бы иллюстрирую, что в модели Country мы собираем всю информацию непосредственно связанную со страной. А short_name было бы полезно использовать, например, если у нас есть несколько языков локализации.



Офлайн

  • Начало
  • » Базы данных
  • » [Решено] Есть базовая модель. Есть данные, которые нужно добавить в базовую модель, но меняются в зависимости от страны. Как правильно все организовать?[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version