4

Ich habe ein Modell, dasWie BigIntegerField, TextField- in Serializer Django serialisiert

folgende Attribute hat
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) 

ich einen 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) 

Aber es zeigt Fehler etwas wie dieses

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

für Textfeld

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

Nun, wie diese Art von Daten zu serialisieren.

+0

Was sind Ihre Importe? – e4c5

+0

@ e4c5 Ich habe die Importe aufgenommen. – abhishek

Antwort

3

Dies liegt daran, dass das Django-Rest-Framework Serializer kein TextField hat. Wenn Ihr Modell über ein TextField verfügt, müssen Sie ein CharField im Serializer verwenden.

CharField Eine Textdarstellung. Optional validiert der Text kürzer als max_length und länger als min_length.

Entspricht django.db.models.fields.CharField oder django.db.models.fields.TextField.

Die Dokumentation ist nicht so klar über BigIntegerFields von Modellen, aber die line for the source code zeigt, dass Integer ist wieder das, was Sie in dem Serializer verwenden.

+0

Für diejenigen, die diese Antwort suchen, ist der aktualisierte Link (08 Mar 2018) für den relevanten Quellcode [hier] (https://github.com/encode/django-rest-framework/blob/d2994e0596c3163ac970b29dad6a61485f938045/rest_framework/serializers. py # L841) – Nogurenn