【问题标题】:AttrbuteError while using serializer in djangorestframework在 django rest 框架中使用序列化程序时出现 AttributeError
【发布时间】:2017-12-26 12:15:44
【问题描述】:

当我尝试使用 djangorestframework 序列化 django 模型时,我得到 'AttrbuteError: 'DeferredAttribute' has no attribute 'isoformat'' 下面是我试图序列化的模型

class PrimaryRecord(models.Model):
      primaryId = models.AutoField(primary_key=True)
      primary_track = models.CharField(max_length=30)
      title = models.CharField(max_length=255)
      start_date = models.DateField()
      create_date = models.DateField()
      year = models.IntegerField()

下面是我使用的序列化器类

from rest_framework import serializers
from snippets.models import Assesor, PrimaryRecord, PrimaryAssesor

class PrimaryRecordSerializer(serializers.Serializer):
      primary_track = serializers.CharField(max_length=30)
      title = serializers.CharField(max_length=255)
      start_date = serializers.DateField(format = None)
      create_date = serializers.DateField(format = None)
      year = serializers.IntegerField()

  def create(self, validated_data):
      return PrimaryAssesor.objects.create(**validated_data)

  def update(self, instance, validated_data):
      instance.primary_track = validated_data.get('primary_track', instance.primary_track)
      instance.title = validated_data.get('title', instance.title)
      instance.start_date = validated_data.get('start_date', instance.start_date)
      instance.create_date = validated_data.get('create_date', instance.create_date)
      instance.year = validated_data.get('year', instance.year)
      instance.save()
      return instance

我正在关注this 学习 djangorestframework 的教程。

我执行以下步骤

p1 = PrimaryRecord(primary_track='P2017-98',title='ABC',start_date=date(2017,6,23),create_date=timezone().now(),year=2017)
p1.save()
serializer = PrimaryRecordSerializer(primaryrecord)
serializer.data # the error occurs here

 'AttrbuteError: 'DeferredAttribute' has no attribute 'isoformat''

【问题讨论】:

  • 您的代码示例中的primaryrecord 是什么?它没有定义。
  • @Linovia 谢谢....你的这个问题解决了我的问题
  • 很高兴你修好了 :)

标签: django python-3.x django-models django-rest-framework


【解决方案1】:

在初始化 PrimaryRecordSerializer 序列化程序时,您使用了错误的变量 primaryrecord 而不是 p1。应该是,

serializer = PrimaryRecordSerializer(p1)

不是

serializer = PrimaryRecordSerializer(primaryrecord)    

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 2017-10-03
    • 2015-04-29
    • 2022-01-08
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 2018-07-11
    • 2015-03-12
    相关资源
    最近更新 更多