如何在 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.
我有以下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.