【发布时间】:2016-12-09 18:51:57
【问题描述】:
当我尝试在 Postman 中执行 PUT 请求时,我在 Django 中遇到问题。
我怀疑这个问题是因为我的模型类中有嵌套的序列化程序,但我不确定。
class Foo(models.Model):
foo_name = models.CharField(max_length=50, unique=True)
foo_statistics = models.ManyToManyField(TrainStatistics)
class FooSerializer(serializers.ModelSerializer):
blah_statistics = BlahStatisticsSerializer(many=True)
class Meta:
model = Foo
fields = ('foo_statistics')
depth = 2
def create(self, validated_data):
"""
Create and return a new `Summary` instance, given the validated data.
"""
blah_statistics_data = validated_data.pop('blah_statistics')
foo = Foo(**validated_data)
for blah_statistic in blah_statistics_data:
FooStatistic.objects.create(summary=summary, **train_statistic)
return summary
def update(self, instance, validated_data):
"""
Update and return an existing `Foo` instance, given the validated data.
"""
instance.blah_statistics = validated_data.get('blah_statistics', instance.blah_statistics) # This line is causing problems
知道是什么导致了这个问题吗?
【问题讨论】:
-
深入了解并发布代码中出现错误的跟踪。
-
永远不要复制或链接错误的图像,粘贴完整的回溯。
-
用导致问题底部的行更新了问题
-
@MatthewLin 你能在错误之前发布验证数据的值吗?我认为问题在于 train_statistics 是一个有序的字典,而有序的字典不是哈希值。
标签: django django-rest-framework ordereddictionary