Django - ошибка Null Integrity не позволяет выполнить POST

Ошибка, которую я получаю при попытке POST, следующая:

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

Вот мои сериализаторы:

class InterestSerializer(serializers.ModelSerializer):
    class Meta:
        model = Interests
        fields = ('id', 'interest_name')


class ProjectsSerializer(serializers.ModelSerializer):
    interest_category = serializers.StringRelatedField()
    class Meta:
        model = Project
        fields = (
            'project_title',
            'project_description',
            'interest_category',
            'created_at',
            'updated_at',
        )

Вот мои модели:

class Interests(models.Model):
    interest_name = models.CharField(max_length=50)
    created_by = models.ForeignKey(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.interest_name


class Project(models.Model):
    project_title = models.CharField(max_length=255)
    project_description = models.TextField(max_length=1500)
    interest_category = models.ForeignKey(Interests, on_delete=models.CASCADE)
    created_by = models.ForeignKey(User, related_name='projects', on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return "Project name:" + "\n" + self.project_title + "\n" + "|" + "\n" + "Created By:" + "\n" + self.created_by.username

Я могу избавиться от ошибки, удалив interest_category = serializers.StringRelatedField(), но проблема в том, что если я не удалю эту строку, фронтенд покажет ID interest_category, а не соответствующее имя. Например, вот что будет показано во фронтенде:

With this line: interest_category = serializers.StringRelatedField()
--------------------------------------------------------------------
Project Title: TestItem1
Project Description: TestItem1Desc
Interest Category: Django
Without the line:
---------------------------------------------------------------------
Project Title: TestItem1
Project Description: TestItem1Desc
Interest Category: 1

Когда у меня есть interest_category = serializers.StringRelatedField(), я могу получить правильное String Related name, которое мне нужно отобразить, но я получаю ошибку NullIntegrity, утверждающую, что столбец "interest_category_id" нарушает ограничение not-null.

<<<Если у меня нет этой строки, я могу выполнить POST без проблем и ошибок, но я не могу отобразить правильное имя String Related, оно будет показывать только ID

interest_category

Как я могу получить имя элемента, чтобы отобразить элемент, не беспокоясь об ошибке NullIntegrity в строке interest_category = serializers.StringRelatedField().

измените это interest_category_name = serializers.StringRelatedField() на interest_category = serializers.SerializerMethodField()

и добавьте следующую функцию к вашему ProjectsSerializer

def get_interest_category_name(self, instance):
    return instance.interest_category.interest_name

и затем добавьте "interest_category_name" в ваш fields из ProjectsSerializer. Это решит вашу проблему.

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