【问题标题】:Exception Type: AssertionError Exception Value: Class RatingSerializers missing "Meta.model" attribute异常类型:AssertionError 异常值:Class RatingSerializers 缺少“Meta.model”属性
【发布时间】:2020-07-13 06:57:39
【问题描述】:

大家好,我是新手,正在学习 django-framework 和构建 rest-api 我被这个错误困住了。它在 get_fields 第 1020 行的 venv\lib\site-packages\rest_framework\serializers.py 处给了我错误。并说 Class RatingSerializers 缺少“Meta.model”属性。

我做了所有的迁移和迁移

    Exception Type: AssertionError
    Exception Value:    
    Class RatingSerializers missing "Meta.model" attribute

urls.py

    from django.contrib import admin
    from django.urls import path
    from rest_framework import routers
    from django.conf.urls import include
    from .views import MovieViewSet, RatingViewSet

    router = routers.DefaultRouter()
    router.register('movies', MovieViewSet)
    router.register('ratings', RatingViewSet)

    urlpatterns = [
        path('', include(router.urls)),
    ]

models.py

    from django.db import models
    from django.contrib.auth.models import User
    from django.core.validators import MaxValueValidator, MinValueValidator
    
    
    class Movie(models.Model):
        title = models.CharField(max_length=32)
        description = models.TextField(max_length=500)


    class Rating(models.Model):
        movie = models.ForeignKey(Movie, on_delete=models.CASCADE)
        user = models.ForeignKey(User, on_delete=models.CASCADE)
        stars = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(5)])

        class Meta:
            unique_together = (('user', 'movie'),)
            index_together = (('user', 'movie'),)

serializer.py

           from rest_framework import serializers
           from .models import Movie, Rating
   
   
           class MovieSerializers(serializers.ModelSerializer):
               class Meta:
                   model: Movie
                   fields = ('id', 'title', 'description')
   
   
           class RatingSerializers(serializers.ModelSerializer):
               class Meta:
                   model: Rating
                   fields = ('id', 'stars', 'user', 'movie')
    views.py
    from django.shortcuts import render
    from rest_framework import viewsets
    from .models import Movie, Rating
    from .serializers import MovieSerializers, RatingSerializers


    class MovieViewSet(viewsets.ModelViewSet):
        queryset = Movie.objects.all()
        serializer_class = MovieSerializers


    class RatingViewSet(viewsets.ModelViewSet):
        queryset = Rating.objects.all()
        serializer_class = RatingSerializers

我不知道它有什么问题。

【问题讨论】:

  • 你能发布错误信息吗?

标签: python-3.x django django-rest-framework


【解决方案1】:

你必须这样做

model = Rating

而不是

model: Rating

电影序列化器也是如此

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2016-02-09
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多