【问题标题】:Django Rest Framework Assertion Error: Missing Meta.model attributeDjango Rest Framework 断言错误:缺少 Meta.model 属性
【发布时间】:2019-11-22 23:44:00
【问题描述】:

我正在尝试使用 Django 框架实现 Rest api。但是,当我单击默认索引页面上的 url 时,它会在/languages/ Class LanguageSerializer 处出现断言错误,缺少 meta.model 属性

在更改 models.py 后,我进行了所有迁移,但它什么也没做

urls.py

from django.urls import path, include
from . import views
from rest_framework import routers

router = routers.DefaultRouter()
router.register('languages', views.LanguageView)

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

models.py

from django.db import models

class Language(models.Model):
    name = models.CharField(max_length=50)
    paradigm = models.CharField(max_length=50)

序列化器.py

from rest_framework import serializers
from .models import Language

class LanguageSerializer(serializers.ModelSerializer):
    class Meta:
        fields = ('id', 'name', 'paradigm')

views.py

from django.shortcuts import render
from rest_framework import viewsets
from .models import Language
from .serializers import LanguageSerializer

class LanguageView(viewsets.ModelViewSet):
    queryset = Language.objects.all()
    serializer_class = LanguageSerializer

我不知道我哪里错了

【问题讨论】:

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


    【解决方案1】:

    您需要在序列化器的Meta 类中指定要序列化的模型,例如:

    from rest_framework import serializers
    from .models import Language
    
    class LanguageSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = Language  # specify the model
            fields = ('id', 'name', 'paradigm')

    否则序列化器无法确定该模型的字段,以及它将如何序列化这些字段中的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-13
      • 2021-12-20
      • 1970-01-01
      • 2023-01-30
      • 2022-12-05
      • 2021-07-15
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多