Python 如何序列化django中的ManyToManyField?
我想做一个帖子模型,让点击的人看看。因此,在创建模型和序列化程序之后,服务器将运行,并发生以下错误 TypeError:直接分配给多对多集合的前端 这是禁止的。改为使用liker.set() 我认为错误发生在ManyToManyField的序列化过程中,但我不知道解决方法。如何实现我想要的功能?这是我的密码 models.pyPython 如何序列化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
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)