【发布时间】:2016-10-13 02:03:46
【问题描述】:
Bar 对 Foo 有 ForeignKey,对一个 Foo 有多个 Bar。在 Django 中使用表单,foreign key defaults to a select list input。
我想在 Django Rest Framework 中使用此功能,首先用于可浏览 API,然后用于模板 HTML 渲染器。我去过nested relations in the docs,也见过this related question,但这没有意义。至少它确实让我想到,我应该看到下拉行为,就像股票 Django Forms 一样。
最终我想要一种方法让我们在创建/更新 Bar 时选择现有的 Foo 我相信我可以使用 TemplateHTMLRenderer 通过手工制作一个将表单字段更改为完整 JSON 数据的表单来做到这一点,即指向现有Foo 的新Bar,假设我在Bar 上编写更新和创建方法。但这对我来说听起来像是我在某个地方错过了“简单的方法”。
class BarSerializer(serializers.ModelSerializer):
# This shows Foo.foo within serialzied Bar JSON:
# I suspect I am missing something with the relation that would allow me to select foo from a list
foo = serializers.SlugRelatedField(many=False, read_only=True,slug_field="foo")
class Meta:
model = Bar
fields = ('foo','some_value','another_value')
class FooSerializer(serializers.ModelSerializer):
owner = serializers.ReadOnlyField(source='owner.username')
# This shows the Bar serialized within the Foo JSON i.e. nested serialization
bars = BarSerializer(many=True);
# reverse rel: related_name='bars' in Foo model
class Meta:
model = Foo
# 'bars' is the related name pointing from bar to foo
fields = ('bars', 'foo', 'owner')
我了解要保存嵌套数据,我的序列化程序需要更新和创建。现在实施。但是我无法理解,我该怎么做才能让 DRF 使用 Foo 选项的某些表示填充选择输入?
【问题讨论】:
-
你解决了吗?我现在被困在同一点上,毫无头绪地徘徊。你能帮忙吗?
-
@justbeingalearner 我的回答有帮助吗?
标签: python django rest foreign-keys django-rest-framework