Проблема с загрузкой связанных данных в сериализаторе REST Framework

в Django REST API проекте имеются две модели: "Тип поставки" и "Процессор".

class SupplyType(models.Model):
    title = models.CharField(max_length=10)
    slug = models.SlugField(max_length=100, unique=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('supply_type_detail', kwargs={'slug': self.slug})


class Processor(Product):
    supply_type = models.ForeignKey(to=SupplyType, on_delete=models.PROTECT, related_name='processor')
    cores_amount = models.IntegerField()
    threads_amount = models.IntegerField()
    technological_process = models.IntegerField()

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('processor_detail', kwargs={'slug': self.slug})

Под них были написаны соответствующие сериализаторы:

class SupplyTypeSerializer(ModelSerializer):
    class Meta:
        model = SupplyType
        fields = ('id', 'title', 'slug')


class ProcessorSerializer(ModelSerializer):
    supply_type = SupplyTypeSerializer(read_only=True)

    class Meta:
        model = Processor
        fields = '__all__'

При помощи созданных методов API удается успешно создать тип поставки, например, "OEM", однако, при попытке добавить процессор, указав в поле "supply_type" значение 1 (id добавленной поставки) возникает ошибка:

django.db.utils.IntegrityError: null value in column "supply_type_id" of relation "store_processor" violates not-null constraint

DETAIL: Failing row contains (2, 2, 4, 14, null).

Содержание ошибки мне понятно, однако почему оно null - в упор не понимаю.

В конечном счете имеются следующие вопросы: как это исправить и как в таком случае добавить процессор с нужным типом поставки через API (все так же через id) или каким-либо другим образом?

По итогу при запросе хотелось бы получить что-то в таком роде:

{
    "id": 1,
    "title": "Intel Pentium Gold G6400",
    "slug": "intel-pentium-gold-g6400",
    "price": 19690,
    "is_published" : true,
    "cores_amount": 2,
    "threads_amount": 4,
    "technological_process": 14,
    "supply_type": 
    {
        "id": 1,
        "title": "OEM",
        "slug": "oem"
    }
}
Вернуться на верх