Найти - Пользователи
Полная версия: [Решено] Есть базовая модель. Есть данные, которые нужно добавить в базовую модель, но меняются в зависимости от страны. Как правильно все организовать?
Начало » Базы данных » [Решено] Есть базовая модель. Есть данные, которые нужно добавить в базовую модель, но меняются в зависимости от страны. Как правильно все организовать?
1
TitanFighter
Доброго времени суток.

Имеется на данный момент модель такого вида:
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
# и тд.

Поделитесь пожалуйста опытом, подскажите, как мне быть?
FishHook
А вы уверены, что завтра у вас в программе не появится, допустим, Казахстан или Литва?
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
TitanFighter
FishHook, все хотел спросить…
Подскажите, для чего вы добавили short_name? Чтоб использоваться в коде, вместо полного названия страны? В чем преимущество?
Спасибо.
FishHook
Да это же просто пример, я тут как бы иллюстрирую, что в модели Country мы собираем всю информацию непосредственно связанную со страной. А short_name было бы полезно использовать, например, если у нас есть несколько языков локализации.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB