Как реализовать модели?
У меня есть 2-а приложения(Р) c моделями(М):
products Р
1.1. Product М - модель с товарами и базовой информацией о нём эта информация будет у всех товаров одинаковая как цена или количество
catalog Р
2.1. Category М - модель с категориями к примеру процессоры и видеокарты
2.1.1. Characteristic М - подмодель Category с уникальными характеристиками для этой категории к примеру у категории процессоры это сокет а у видеокарты тип памяти
2.1.1.1. Content М - значение этой характеристики к примеру сокет может быть АМ4 ИЛИ АМ1
Теперь о связях:
Product (Т - товары) связаны один ко многим с категориями у одной категории может быть много товаров
class Product(models.Model):
categories = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name='Категория')
Category (К - категория) является самой верхней моделью
class Category(models.Model):
name = models.CharField('Название категории', max_length=30)
Characteristic (НХ - название характеристики) - связана один ко многим с каталогом у одного каталога может быть много характеристик
class Characteristic(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name='Категория')
name = models.CharField('Название характеристики', max_length=50)
Content (З - значение) - связь один ко многим с характеристикой у одной характеристики может быть много значений
class Content(models.Model):
characteristic = models.ForeignKey(Characteristic, on_delete=models.CASCADE, verbose_name='характеристика')
content = models.CharField(verbose_name=characteristic.name, unique=True, max_length=150)
Как это выглядит в графическом плане чтобы лучше понять:
Как должно работать:
Когда мы выбираем товару категорию к которой он будет привязан категория будет передавать модели с товарами характеристики со значениями специфичны для данной категории
Вопрос такой как это сделать
Ответы (1 шт):
Ты можешь получить доступ к характеристикам что привязаны к категории через атрибут characteristic_set у объекта категории. То есть твой полный код должен выглядеть как-то так:
Product.objects.get(pk = 'тут ты должен указать primary key для продукта').categories.characteristic_set.all()
Более подробно ты можешь прочитать тут
