Как создать правильно сериалайзер с методом Create в Django?

Мне нужно сделать сериалайзер для того что бы можно было создать Сеть(Chain), но постоянно выводит ошибку как я не пытался

Модели:

class Address(models.Model):
class Meta:
    verbose_name = "Адрес"
    verbose_name_plural = "Адреса"

country = models.CharField(verbose_name="Страна", max_length=255)
city = models.CharField(verbose_name="Город", max_length=255)
street = models.CharField(verbose_name="Улица", max_length=255)

def __str__(self):
    return f'{self.country} {self.street} {self.city}'

class Contact(models.Model):
class Meta:
    verbose_name = "Контакт"
    verbose_name_plural = "Контакты"

email = models.CharField(verbose_name='Почта', max_length=255)
address = models.ForeignKey(Address, verbose_name='Адрес', on_delete=models.CASCADE)

def __str__(self):
    return f'{self.email} {self.address}'


class Staff(models.Model):
class Meta:
    verbose_name = "Сотрудник"
    verbose_name_plural = "Сотрудники"

first_name = models.CharField(verbose_name='Имя', max_length=255)
last_name = models.CharField(verbose_name='Фамилия', max_length=255)
is_active = models.BooleanField(verbose_name='Активный', default=True)

def __str__(self):
    return f'{self.first_name} {self.last_name}'


class Product(models.Model):
class Meta:
    verbose_name = "Продукт"
    verbose_name_plural = "Продукты"

title_product = models.CharField(verbose_name='Название Продукта', max_length=255)
model = models.CharField(verbose_name='Модель', max_length=255)
date = models.DateTimeField(verbose_name='Дата выхода Продукта', max_length=255)

def __str__(self):
    return f'{self.title_product}'


class Chain(models.Model):
class Meta:
    verbose_name = "Сеть"
    verbose_name_plural = "Сети"

class Suppler(models.IntegerChoices):
    plant = 0, 'Завод'
    distributor = 1, 'Дистрибьютор'
    dealership = 2, 'Дилерский центр'
    large_retail_chain = 3, 'Крупная розничная сеть'
    individual_entrepreneur = 4, 'ИП'

title = models.CharField(verbose_name="Название сети", max_length=255)
structure = models.PositiveSmallIntegerField(verbose_name='Структура', choices=Suppler.choices)

def __str__(self):
    return f'{self.title} {self.structure}'


class InfoChain(Chain):
class Meta:
    verbose_name = "Информация сети"
    verbose_name_plural = "Информация сетей"

staff = models.ManyToManyField(Staff, verbose_name='Сотрудники', related_name='staff')
debt = models.FloatField(verbose_name=f'Задолженность', null=True, blank=True)
date_creation = models.DateTimeField(verbose_name='Дата создания', auto_now_add=True)
products = models.ForeignKey(Product, verbose_name='Продукты', related_name='product', on_delete=models.DO_NOTHING)
contacts = models.ForeignKey(Contact, verbose_name='Контакты', on_delete=models.CASCADE)
supplier = models.ForeignKey(Chain, verbose_name='Главный поставщик', on_delete=models.DO_NOTHING,
                             related_name='suppler', blank=True, null=True)

def __str__(self):
    return f'{self.title} {self.debt} {self.products} {self.staff}'

Сериалайзеры:

class ChainSerializer(serializers.ModelSerializer):
class Meta:
    model = Chain
    fields = '__all__'


class AddressSerializer(serializers.ModelSerializer):
class Meta:
    model = Address
    fields = '__all__'


class ContactSerializer(serializers.ModelSerializer):
address = AddressSerializer()

class Meta:
    model = Contact
    fields = '__all__'


class ProductSerializer(serializers.ModelSerializer):
class Meta:
    model = Product
    fields = '__all__'


class StaffSerializer(serializers.ModelSerializer):
class Meta:
    model = Staff
    fields = '__all__'


class InfoChainSerializer(serializers.ModelSerializer):
staff = StaffSerializer(many=True)
products = ProductSerializer()
contacts = ContactSerializer()
supplier = ChainSerializer()

# structure = StructureSerializer()

class Meta:
    model = InfoChain
    fields = '__all__'


class ProductCreateSerializer(serializers.ModelSerializer):
class Meta:
    model = Product
    fields = '__all__'

def create(self, validated_data):
    product = Product.objects.create(**validated_data)
    print(product)
    return product.title_product, product.model, product.date


class ChainCreateSerializer(serializers.ModelSerializer):
products = ProductCreateSerializer()

class Meta:
    model = InfoChain
    fields = ('title', 'structure', 'staff', 'contacts', 'supplier', 'products')

def create(self, validated_data):
    chain = InfoChain.objects.create(
        **validated_data
    )
    return chain

Ошибка: ValueError at /create_chain/ Cannot assign "OrderedDict([('title_product', 'asd'), ('model', 'asd'), ('date', datetime.datetime(2023, 1, 6, 0, 59, tzinfo=zoneinfo.ZoneInfo(key='UTC')))])": "InfoChain.products" must be a "Product" instance.

Вернуться на верх