django - 'NoneType' 对象对于序列化程序不可迭代
问题描述
我正在尝试从序列化程序中提取数据以创建函数,但出现错误
楷模
class Article(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
author = models.ForeignKey(User,on_delete=models.CASCADE,related_name='articles')
caption = models.CharField(max_length=250)
class ArticleTags(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
tag = models.CharField(max_length=20,null=True,blank=True)
article = models.ForeignKey(Article, on_delete=models.CASCADE,null=True,blank=True, related_name='posttags')
序列化器
class ArticleCreateSerializer(serializers.ModelSerializer):
images_set = ArticleImagesViewSerializer(source='images',required=False,many=True)
tags_set = ArticleTagViewSerializer(source='posttags',required=False,many=True)
class Meta:
model = Article
fields = ('images_set','tags_set','id')
def create(self,validated_data):
images = self.context['request'].FILES.getlist('images_set')
articleinit = Article.objects.create(**validated_data)
tags = self.validated_data.get('tags_set',None)
for imageinit in list(images):
m2 = ArticleImages(article=articleinit , image= imageinit )
m2.save()
for taginit in list(tags):
m3 = ArticleTags(article=articleinit , tag = taginit)
m3.save()
return articleinit
这是该行的错误:
File "C:server\accounts\serializers.py", line 146, in create
for taginit in list(tags):
TypeError: 'NoneType' object is not iterable
为什么我会收到此错误?
解决方案
改变 :
tags = self.validated_data.get('tags_set',None)
至:
tags = self.validated_data.get('tags_set',[])
这将避免尝试遍历 None,而是遍历空列表(因此不会产生影响)
抱歉格式错误,用我的手机。
推荐阅读
- php - 从 php/wordpress 中的 url 解析日期
- c# - 打印具有特定宽度和高度的图像
- vulkan - 关于 Vulkan 中的渲染通道兼容性
- javascript - 检查字符串中是否存在子字符串
- javascript - Droppable 在 DROP 之后触发 OUT 事件
- python-3.x - librosa.util.exceptions.ParameterError:单声道音频的形状无效:ndim=2,shape=(172972, 2)
- winapi - 调整编辑窗口的大小
- javascript - 如何使用 ondblclick 触发“callto:number”
- javascript - 我正在尝试使用 JavaScript 将海报 URL 添加到我的 neo4j 电影数据库,但我一直收到这个未定义的对象错误
- python - 验证损失和验证准确率均高于训练损失,并且存在波动