Как решить ошибку Django 'django.db.utils.IntegrityError: NOT NULL constraint failed: myapi_article.author_id'

Я пытаюсь создать фиктивный новостной сайт для изучения django.

Я сталкиваюсь с указанной ошибкой при выполнении POST-запроса для создания новой статьи, которая связана с зарегистрированным пользователем через foreignKey author.

Пользователи обрабатываются с помощью JWT на передней стороне.

Я застрял на этом уже несколько дней и не знаю, где искать ответы.

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

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['id', 'username', 'password', 'email']
        extra_kwargs = {'password': {'write_only': True}}

    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        return user

class ArticleSerializer(serializers.ModelSerializer):
    author= UserSerializer(read_only=True) 
    class Meta:
        model = Article
        fields = '__all__'
        #read_only_fields = ['author']

Вот соответствующий вид:

class ArticleCreateView(generics.ListCreateAPIView):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer
    permission_classes = (IsAuthenticated,)

    def perform_create(self, serializer):
        serializer.save(author=self.request.user)

и вот соответствующая модель:

class Article(models.Model):
    headline = models.CharField(max_length=200)
    subtitle = models.CharField(max_length=300)
    section = models.CharField(max_length=200, blank=True, null=True)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='articles')
    body = models.TextField()
    #pub_date = models.DateTimeField(auto_now_add=True, blank=True, null=True)
    endorsements = models.IntegerField(default=0, blank=True, null=True)

    def __str__(self):
        return self.headline

Я знаю, что могу установить для поля author значение null/blank и заглушить ошибку, но это не решит проблему, поскольку статьи все равно не будут привязаны к пользователям.

Я также видел несколько предложений удалить все миграции и перестроить базу данных. Я пробовал это сделать, но ничего не вышло.

Любая помощь очень ценится!

edit: full traceback below

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