小编arw*_*180的帖子

使用Django Rest Framework 3.2.2的可写嵌套序列化器和现有对象

考虑具有关联类别的Listing模型.我想通过对数据执行POST来为现有类别创建新的列表: {"title": "myapp", "category": {"name": "Business"}},其中title是应创建的列表的标题,并且Business是用于此新列表的现有类别的名称.

当我尝试发出这样的请求并ListingSerializer为此实例化时,我收到一个错误,指示类别名称必须是唯一的 - 我不想创建新的类别,而是使用现有的类别.我已尝试在类别字段上设置验证器[],但这并没有改变行为.

我可以使用a SlugRelatedField,但这会强制我的请求数据看起来更像{"title": "myapp", "category": "Business"},这不是我想要的.我尝试使用source参数SlugRelatedField来指定嵌套关系,但这也不起作用:

category = serializers.SlugRelatedField(
        slug_field='category.name',
        queryset=models.Category.objects.all()
    )
Run Code Online (Sandbox Code Playgroud)

收益率:

  "category": [
    "Object with name={'name': 'Business'} does not exist."
  ]
Run Code Online (Sandbox Code Playgroud)

models.py:

import django.contrib.auth
from django.db import models
from django.conf import settings

class Profile(models.Model):
    display_name = models.CharField(max_length=255)
    user = models.OneToOneField(settings.AUTH_USER_MODEL)

class Category(models.Model):
    name = models.CharField(max_length=50, unique=True)
    description = models.CharField(max_length=200)

class Listing(models.Model):
    title = models.CharField(max_length=50, …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

21
推荐指数
2
解决办法
9489
查看次数

标签 统计

django ×1

django-rest-framework ×1