Django: AttributeError: тип объекта «GroupModel» не имеет атрибута «_meta» - PullRequest
2 голосов
/ 08 июня 2019

Я новичок в Django, в моем коде, когда я запросил у почтальона, я получил эту ошибку, может кто-нибудь помочь мне, что не так в моем коде?

модель:

from django.db import models

class GroupModel(object):
    title=models.CharField(max_length=20)
    description = models.CharField()

    class Meta:
        db_table = 'group'
    def __str__(self):
        return self

сериализатор:

from rest_framework import serializers
from .models import GroupModel

class GroupSerializer(serializers.ModelSerializer):
    print('hello4')
    class Meta:
        model = GroupModel
        fields = '__all__'

просмотров:

from django.shortcuts import render
from django.http import HttpResponse, JsonResponse
from .serializer import GroupSerializer
from .models import GroupModel
from rest_framework.decorators import api_view
from rest_framework import status
@api_view(['POST'])
def InsetGroup(request):
     data = GroupSerializer(data = request.data)

     if request.method == 'POST':
         if data.is_valid():
             data.save()
             return JsonResponse('saved was saccessfull', safe = False)
         return JsonResponse(data.errors, status = status.HTTP_400_BAD_REQUEST, safe = False)

Ответы [ 2 ]

2 голосов
/ 08 июня 2019

Модели в Django должны быть подклассом класса Model [Django-doc] :

from django.db import models

class GroupModel(<b>models.Model</b>):
    title=models.CharField(max_length=20)
    description = models.CharField()

        def __str__(self):
            return <b>self.title</b>

    class Meta:
        db_table = 'group'

Ваш __str__ также должен возвращать str, например, self.title, , а не self, поскольку это объект GroupModel, а не str.

1 голос
/ 08 июня 2019

Совет: чтобы улучшить ваш код, вам не нужно проверять, является ли is_valid () истинным или нет.Вы можете использовать «is_valid (rise_exception = True)», чтобы автоматически вызвать ошибку 400, если что-то не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...