考虑具有关联类别的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)