Найти - Пользователи
Полная версия: OperationalError: no such column. In Django Rest Framework
Начало » Python для новичков » OperationalError: no such column. In Django Rest Framework
1
Ivan_Ro
Есть маленький проект - API Блога с комментариями.
Когда пытаюсь удалить статью появляется такая вот ошибка:

Exception Type: OperationalError
Exception Value: no such column: newsList_comment.article_id


Где искать эту колонку “newsList_comment.article_id”, как быть?

И кроме того, не могу понять как связать правильно “комментарии к статьям” со “статьями”, чтобы можно было их добавлять и просматривать?


Структура проекта:

├───newsList
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ serializers.py
│ │ tests.py
│ │ urls.py
│ │ views.py
│ │ __init__.py
│ │
│ ├──migrations
│ 0001_initial.py
│ __init__.py


└───NewsToday
asgi.py
settings.py
urls.py
wsgi.py
__init__.py


models.py

 from django.db import models
from django.contrib.auth.models import User
class Article(models.Model):
    title = models.CharField(max_length=120)
    link = models.URLField()
    created = models.DateTimeField(auto_now_add=True)
    upvotes = models.IntegerField(default=0)
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='articles')
    def __str__(self):
        return self.title
class Comment(models.Model):
    article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='comments')
    name = models.CharField(max_length=80)
    content = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    def __str__(self):
        return self.content


views.py

 from rest_framework import viewsets
from .models import Article, Comment
from .serializers import ArticleSerializer, CommentSerializer
class ArticleViewSet(viewsets.ModelViewSet):
    serializer_class = ArticleSerializer
    queryset = Article.objects.all()
class CommentViewSet(viewsets.ModelViewSet):
    serializer_class = CommentSerializer
    queryset = Comment.objects.all()


serializers.py

 from rest_framework import serializers
from .models import Article, Comment
class ArticleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Article
        fields = ('id', 'title', 'link', 'created', 'upvotes', 'author')
class CommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Comment
        fields = ('article', 'name', 'content', 'created')


urls.py

 from rest_framework.routers import DefaultRouter
from .views import ArticleViewSet, CommentViewSet
router = DefaultRouter()
router.register(r'news', ArticleViewSet)
router.register(r'comments', CommentViewSet)
urlpatterns = router.urls
Romissevd
Ivan_Ro
Exception Type: OperationalError
Exception Value: no such column: newsList_comment.article_id
Похоже, что столбца article_id нет в твоей таблице
Попробуй выполнить
 python manage.py makemigrations
python manage.py migration
Ivan_Ro
И кроме того, не могу понять как связать правильно “комментарии к статьям” со “статьями”, чтобы можно было их добавлять и просматривать?
Попробуй так
 from rest_framework import serializers
from .models import Article, Comment
class ArticleSerializer(serializers.ModelSerializer):
    comments = CommentSerializer(many=True, required=True)
    class Meta:
        model = Article
        fields = ('id', 'title', 'link', 'created', 'upvotes', 'author', 'comments')
class CommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Comment
        fields = ('article', 'name', 'content', 'created')
Больше информации тут
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB