如何在 django rest 框架中使用父模型序列化程序获取子模型的数据

How to get data for child model with parent model serializer in django rest framework

我有以下2个模型:

# parent model
class Klass(models.Model):
    title = models.CharField(max_length=50)
    description = models.CharField(max_length=500)

# child model
class KlassSettings(models.Model):
    klass = models.OneToOneField(Klass, related_name='klass_settings', on_delete=models.CASCADE)
    private = models.BooleanField(default=True, choices=(
    (True, 'private'),
    (False, 'public'),
))
    verify_required = models.BooleanField(default=True, choices=(
    (True, 'required'),
    (False, 'not required'),
))

我想使用 Django Rest Framework 创建 Klass。我使用以下序列化程序:

class KlassSerializer(ModelSerializer):
    url = HyperlinkedIdentityField(view_name='mainp-api:detail', lookup_field='pk')
    class Meta:
        model = Klass
        fields = ('url', 'id', 'title', 'description')

我的问题是:如何获取 KlassSettings 模型 (2 BooelanFields) 的数据并保存?

抛开模型设计的问题不谈(private和verify_required在Klass中可以只是字段吗?),我相信你要找的是serialzing a reverse relationship。您的最终解决方案看起来与您拥有的类似,但将在 KlassSerializer 中包含一个 klass_settings 字段并创建一个 KlassSettingsSerializer class.