Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何序列化django中的ManyToManyField?_Python_Django_Many To Many_Manytomanyfield - Fatal编程技术网

Python 如何序列化django中的ManyToManyField?

Python 如何序列化django中的ManyToManyField?,python,django,many-to-many,manytomanyfield,Python,Django,Many To Many,Manytomanyfield,我想做一个帖子模型,让点击的人看看。因此,在创建模型和序列化程序之后,服务器将运行,并发生以下错误 TypeError:直接分配给多对多集合的前端 这是禁止的。改为使用liker.set() 我认为错误发生在ManyToManyField的序列化过程中,但我不知道解决方法。如何实现我想要的功能?这是我的密码 models.py class post (models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, o

我想做一个帖子模型,让点击的人看看。因此,在创建模型和序列化程序之后,服务器将运行,并发生以下错误

TypeError:直接分配给多对多集合的前端 这是禁止的。改为使用liker.set()

我认为错误发生在ManyToManyField的序列化过程中,但我不知道解决方法。如何实现我想要的功能?这是我的密码

models.py

class post (models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='authorName', null=True)
    title = models.CharField(max_length=40)
    text = models.TextField(max_length=300)
    image1 = models.ImageField(blank=True, null=True)
    image2 = models.ImageField(blank=True, null=True)
    image3 = models.ImageField(blank=True, null=True)
    image4 = models.ImageField(blank=True, null=True)
    image5 = models.ImageField(blank=True, null=True)
    like = models.IntegerField(default=0)
    liker = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='liker', blank=True)
    tag1 = models.CharField(max_length=20, null=True)
    tag2 = models.CharField(max_length=20, null=True)
    tag3 = models.CharField(max_length=20, null=True)
    tag4 = models.CharField(max_length=20, null=True)
    tag5 = models.CharField(max_length=20, null=True)

class comment (models.Model) :
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
    post = models.ForeignKey(post, on_delete=models.CASCADE)
    text = models.TextField(max_length=200)

class view (models.Model) :
    post = models.ForeignKey(post, on_delete=models.CASCADE)
    viewCnt = models.IntegerField(default=0)
序列化程序.py

class commentSerializer (serializers.ModelSerializer) :

    class Meta :
        model = comment
        fields = ['author', 'text']

class viewSerializer (serializers.ModelSerializer) :

    class Meta :
        model = view
        field = ['viewCnt']

class postSerializer (serializers.ModelSerializer) :
    author = serializers.CharField(source='author.username', read_only=True)
    image1 = serializers.ImageField(use_url=True, allow_null=True)
    image2 = serializers.ImageField(use_url=True, allow_null=True)
    image3 = serializers.ImageField(use_url=True, allow_null=True)
    image4 = serializers.ImageField(use_url=True, allow_null=True)
    image5 = serializers.ImageField(use_url=True, allow_null=True)
    comment = commentSerializer(many=True, read_only=True)
    view = viewSerializer(many=True, read_only=True)

    class Meta:
        model = post
        fields = ['pk', 'author', 'title', 'text', 'image1', 'image2', 'image3', 'image4', 'image5', 'like', 'liker', 'tag1', 'tag2', 'tag3', 'tag4', 'tag5', 'comment', 'view']

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