Неправильно настроенные модели отдыха Django: - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь использовать Django ORM, где он запрашивает API, а не базу данных.Я нашел библиотеку Django Rest Models, которая делает это в сочетании с библиотекой dynamic-rest.

Моя модель называется Client, и когда я запускаю:

Client.objects.filter(id=62)

, я получаюследующая ошибка:

ImproperlyConfigured: the response does not contains the result for client.  
maybe the resource name does not match the one on the api. please check if 
Client.APIMeta.resource_name_plural is ok had [u'last_name', u'first_name', 
u'agent',...] in result

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

Дополнительная информация

Это моя модель на клиенте

class Client(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    agent = models.ForeignKey(Agent, db_column='agent')
    .....


    class APIMeta:
        resource_path = 'clients'
        resource_name = 'client'
        resource_name_plural = 'clients'
        pass

Это мой код в API

class ClientSerializer(DynamicModelSerializer):
    agent = DynamicRelationField('AgentSerializer')
    class Meta:
        fields = '__all__'
        model = Client
        name = 'client'


class AgentSerializer(DynamicModelSerializer):

    client = DynamicRelationField('ClientSerializer', many=True)

    class Meta:
        fields = '__all__'
        model = Agent

Обновление

После отладки я обнаружил, что данные возвращаются без имени модели какключ.Как вернуть данные в нужном формате?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

django-rest-models сильно зависит от dynamic-rest framework.
Важно прочитать документы по динамическому отдыху, прежде чем пытаться использовать django-rest-models.

В этом случае наборы производных наследуются от ModelViewSet, тогда как они должны были наследоваться от DynamicModelViewSet.

0 голосов
/ 19 февраля 2019

В вашем models.py у вас нет следов поля с именем 'id'.Хотя это автоматически занимает поле при хранении ваших данных в базе данных.Это требует отдельного поля, когда вы вызываете его для извлечения данных.Попробуйте добавить поле 'id'.

class Client(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    agent = models.ForeignKey(Agent, db_column='agent')
    .....


class APIMeta:
    resource_path = 'clients'
    resource_name = 'client'
    resource_name_plural = 'clients'
    pass
...