首页 > 解决方案 > '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

为什么我会收到此错误?

标签: djangodjango-rest-framework

解决方案


改变 :

tags = self.validated_data.get('tags_set',None)

至:

tags = self.validated_data.get('tags_set',[])

这将避免尝试遍历 None,而是遍历空列表(因此不会产生影响)

抱歉格式错误,用我的手机。


推荐阅读