Я хотел бы получить несколько советов о том, как обрабатывать отношения от 1 до 1..0 в Django.
У меня есть список товаров, которые имеют множество атрибутов, которые в большинстве случаев не имеют значения (до 95% товаров). Вместо того, чтобы хранить их в таблице продуктов, я поместил их в отдельные таблицы, поэтому у меня есть следующее (с редкими атрибутами возраста и веса):
products
id
colour
height
width
product_age
id
product_id (FK)
age
product_weight
id
product_id (FK)
weight
и т.д.
Во-первых, я знаю, что в InnoDB пустые значения не занимают места, поэтому я думаю, что, возможно, это не повлияет на производительность, если я переместу разреженные атрибуты в таблицу продуктов
Во-вторых, если я сохраню все эти отношения от 1 до 1..0, как мне справиться с этим в models.py. У меня сейчас есть:
class Product(models.Model):
colour = models.CharField(max_length=13)
height = models.CharField(max_length=13)
width = models.CharField(max_length=13)
class ProductAge(models.Model):
product_id = models.ForeignKey(Product)
age = models.CharField(max_length=13)
class ProductWeight(models.Model):
product_id = models.ForeignKey(Product)
weight = models.CharField(max_length=13)
Громко иметь все это как разные объекты, а это значит, что мне придется помнить, какие атрибуты являются отдельными объектами при кодировании.
Любая помощь будет оценена. Спасибо
UPDATE
Наследование работает здесь, но все еще кажется немного грязным. Мне нужно что-то вроде:
class Product(models.Model):
colour = models.CharField(max_length=13)
height = models.CharField(max_length=13)
width = models.CharField(max_length=13)
class ProductWithAge(Product):
age = models.CharField(max_length=13)
class ProductWithAgeAndWeight(Product):
weight = models.CharField(max_length=13)
Тогда я бы фактически использовал в своем коде только ProductWithAgeAndWeight, поскольку я мог получить доступ ко всем полям давать из этого. База данных будет разделять данные между тремя таблицами. Может быть, проблема в моем названии ... есть мысли?