问题描述
我想制作一个帖子模型,并向点击的人展示。因此,在创建模型和序列化程序之后,服务器将运行,并发生以下错误。
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,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)
serializers.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)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)