問題
こちらの記事で行っていたAPIを作る練習をしようとしていた際に一覧を表示しようとしたら
と出てしまいました。
原因と対処
AssertionError: Class ItemSerializer missing "Meta.model" attribute
これはserializer.pyで定義したシリアライザークラスにおいて、Metaクラスが正しく定義できておらず、見つからないと言っています。さらにMeta.model
がと言っているので、どうやらMeta.model
が原因そうです。
アプリフォルダのmodels.py
を見てみると
models.py
from rest_framework import serializers
from .models import Item
class ItemSerializer(serializers.ModelSerializer):
class Meta:
models = Item #modelsではなくmodel
fields = '__all__'
model
としなければならないところをmodels
と書いてしまっていました。
models.py
from rest_framework import serializers
from .models import Item
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item #修正後
fields = '__all__'
メタクラスってそもそも?
メタとは、英語で「高次」とか、「超える」という意味です。メタクラスとは、クラスの設定を決めるクラスのことで、一般的なクラスはインスタンス生成後の挙動を定めていますが、メタクラスはそれより高次とも言える、クラスそのもの生成や挙動に関するを定めています。
難しいですね...