问题描述
我有一个带有两个模型Post和Categories的Simeple应用程序。帖子将包含三个字段:标题,正文和分配的类别,应预先创建。用户将首先创建类别,然后使用在“分配的类别”字段中放置的类别来创建帖子。
我正在发送这样的值->
{
"id": 5,"title": "title 1","body": "body","categories_assigned": [
{
"id": 1,"name": "technlogy"
}
]
}
但是我尝试将字典放在多对多字段中。我只将值作为数组中的有序dict接收。
[OrderedDict([('name','technlogy')])]
我知道我可以将它放在for循环中,并使用i [“ name”]下标它...但是它仅给我提供name属性。我希望唯一的ID在很多字段中添加,以防有很多类别对象的名称=技术
我的serializers.py文件->
class CategorySerilizer(serializers.ModelSerializer):
class Meta:
model = models.Category
fields = ['id','name']
class PostSerializer(serializers.ModelSerializer):
categories_assigned = CategorySerilizer(many = True)
class Meta:
model = models.Post
fields = ['id','title','body','categories_assigned']
def create(self,validated_data):
post = models.Post.objects.create(title = validated_data["title"],body = validated_data["body"])
print(validated_data["categories_assigned"])
for i in validated_data["categories_assigned"]:
print(i["name"]) // 'technlogy'
return post
我的models.py文件->
class Post(models.Model):
title = models.CharField(max_length=100)
body = models.CharField(max_length=500)
categories_assigned = models.ManyToManyField("Category",blank=True)
def __str__(self):
return str(self.title)
class Category(models.Model):
name = models.CharField(max_length=30)
def __str__(self):
return str(self.name)
这是我的视图文件,它们很简单->
class PostView(viewsets.ModelViewSet):
serializer_class = serializers.PostSerializer
queryset = models.Post.objects.all()
class CategoryView(viewsets.ModelViewSet):
serializer_class = serializers.CategorySerilizer
queryset = models.Category.objects.all()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)