我目前有一个带有外键字段的模型序列化器。我想要一个序列化对象的相关模型,而不仅仅是一个 ID。我知道这可以通过为相关模型创建序列化器并执行
related_field = RelatedFieldSerializer()
但是,当主对象发生创建/更新时,如何处理?例如。我想创建主对象的实例,但相关字段将作为对象(而不是 pk)发送,并且不会引用现有的外键,它将尝试创建一个新对象。
希望这是有道理的
如果您不想创建现有对象,您可以在利用时执行类似的操作PrimaryKeyRelatedField
据记录here http://www.django-rest-framework.org/api-guide/relations/#primarykeyrelatedfield.
models.py
class Model1(models.Model):
time = models.DateTimeField(auto_now=True)
class Model2(models.Model):
model1= models.ForeignKey(Model1, on_delete=models.CASCADE)
f1 = models.FloatField()
那么你的serializers.py
看起来像:
class Model2Serializer(serializers.ModelSerializer):
model1 = serializers.PrimaryKeyRelatedField(
read_only=False, queryset=Model1.objects.all())
class Meta:
model = Model2
fields = (
'model1',
'f1',
)
然后就可以针对pk
现有的价值Model1
数据库中的值。请注意,您可以使用除pk
值(如果需要)。看这个帖子 https://stackoverflow.com/questions/47974094/django-rest-framework-serializer-access-existing-foreign-key.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)