Помогите пожалуйста, как лучше организовать связи между моделями?
Пробовал несколько вариантов, но как то не удачно получилось
Основная модель через какую все выводится это SparePart, остальное как дополнение
from django.db import models
from django.utils import timezone
class SparePart(models.Model):
name_part = models.CharField(verbose_name='Имя запчасти', max_length=120)
number_part = models.CharField(verbose_name='Номер запчасти', max_length=70, blank=True, null=True)
text_info = models.TextField(blank=True, null=True, verbose_name='Описание')
pub_date = models.DateTimeField(verbose_name='Дата публикации')
car_part = models.ManyToManyField("ModelCar", verbose_name='Модель')
modification_car = models.ManyToManyField('ModificationCar', verbose_name='Модификация')
engine_car = models.ManyToManyField('EngineCar', verbose_name='Двигатель')
main_image = models.ImageField(upload_to='product_image/main/', blank=True, null=True)
spare_image = models.ManyToManyField('ImageProduct', verbose_name='Изображение')
type_spare_part = models.ForeignKey('TypeSparePart', null=True, verbose_name='Тип Запчасти', on_delete=models.CASCADE)
def __str__(self):
return self.name_part
class Meta:
verbose_name = "Запчасть"
verbose_name_plural = "Запчасти"
class MakeCar(models.Model):
name_make_car = models.CharField(verbose_name='Производитель', max_length=100)
def __str__(self):
return self.name_make_car
class Meta:
verbose_name = "Производитель"
verbose_name_plural = "Производители"
class ModelCar(models.Model):
name_model_car = models.CharField(verbose_name='Модель', max_length=100)
car_model = models.ForeignKey("MakeCar", verbose_name='Производитель', on_delete=models.CASCADE)
def __str__(self):
return '{} - {}'.format(self.car_model.name_make_car, self.name_model_car)
class Meta:
verbose_name = "Модель"
verbose_name_plural = "Модели"
class ModificationCar(models.Model):
modification_car = models.CharField(max_length=50, verbose_name='Модификация')
def __str__(self):
return str(self.modification_car)
class Meta:
verbose_name = "Модификация Авто"
verbose_name_plural = "Модификации Авто"
class TypeSparePart(models.Model):
name_type = models.CharField(max_length=100)
def __str__(self):
return str(self.name_type)
class Meta:
verbose_name = "Тип Запчасти"
verbose_name_plural = "Тип Запчасти"
class EngineCar(models.Model):
name_engine = models.CharField(max_length=100)
def __str__(self):
return str(self.name_engine)
class Meta:
verbose_name = "Двигатель"
verbose_name_plural = "Двигателя"
class ImageProduct(models.Model):
image_product = models.ImageField(upload_to='product_image/', blank=True, null=True)
def __str__(self):
return str(self.image_product)
class Meta:
verbose_name = "Изображение"
verbose_name_plural = "Изображения"