4

У меня есть модель, которая имеет следующие атрибутыКак сериализовать BigIntegerField, TextField в сериализаторе Джанго

from django.db import models 
class ApiLogs(models.Model): 
    user_id = models.BigIntegerField(null=True) 
    ip = models.CharField(max_length=16) 
    user_agent = models.TextField(blank=True, null=True) 
    client = models.CharField(max_length=50, blank=True, null=True) 
    client_version = models.CharField(max_length=50, blank=True, null=True) 
    token = models.TextField(blank=True, null=True) 
    uri = models.CharField(max_length=200) 
    method = models.CharField(max_length=20) 

Я определил Serializer

from rest_framework import serializers 
class ApiSerializer(serializers.Serializer): 
    user_id = serializers.BigIntegerField(allow_null=True) 
    ip = serializers.CharField(max_length=16) 
    user_agent = serializers.TextField(allow_blank=True, allow_null=True) 
    client = serializers.CharField(max_length=50, allow_blank=True, allow_null=True) 
    client_version = serializers.CharField(max_length=50, allow_blank=True, allow_null=True) 
    token = serializers.TextField(allow_blank=True, allow_null=True) 
    uri = serializers.CharField(max_length=200) 
    method = serializers.CharField(max_length=20) 

Но он показывает ошибку несколько, как это

user_id = serializers.BigIntegerField(allow_null=True) 
AttributeError: 'module' object has no attribute 'BigIntegerField' 

для текстового поля

user_agent = serializers.TextField(allow_blank=True, allow_null=True) 
AttributeError: 'module' object has no attribute 'TextField' 

Теперь, как сериализовать данные этого типа.

+0

Какой у вас импорт? – e4c5

+0

@ e4c5 Я включил импорт. – abhishek

ответ

3

Это связано с тем, что у рамки django rest нет TextField. Если у вашей модели есть TextField, вам нужно использовать CharField в сериализаторе.

CharField Текстовое представление. Опционально проверяет текст на короче max_length и дольше min_length.

Соответствует django.db.models.fields.CharField или django.db.models.fields.TextField.

Документация не ясно, о BigIntegerFields из моделей, но это показывает, что line for the source code IntegerField снова то, что вы должны использовать в сериализаторе.

+0

Для тех, кто смотрит на этот ответ, обновленная ссылка (08 марта 2018 года) для соответствующего исходного кода [здесь] (https://github.com/encode/django-rest-framework/blob/d2994e0596c3163ac970b29dad6a61485f938045/rest_framework/serializers. ру # L841) – Nogurenn

 Смежные вопросы

  • Нет связанных вопросов^_^