3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Class ItemSerializer missing "Meta.model" attributeの対処法

Posted at

問題

こちらの記事で行っていたAPIを作る練習をしようとしていた際に一覧を表示しようとしたら

スクリーンショット 2024-05-27 0.02.00.png

と出てしまいました。

原因と対処

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__'

メタクラスってそもそも?
メタとは、英語で「高次」とか、「超える」という意味です。メタクラスとは、クラスの設定を決めるクラスのことで、一般的なクラスはインスタンス生成後の挙動を定めていますが、メタクラスはそれより高次とも言える、クラスそのもの生成や挙動に関するを定めています。

難しいですね...

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?