Ric*_*ick 6 python django rest foreign-keys django-rest-framework
Bar有一个ForeignKey to Foo,很多Bar到一个Foo.在Django中使用Forms,外键默认为选择列表输入.
我想在Django Rest Framework中使用此功能,首先是Browsable API,然后是Template HTML Renderer.我一直在文档中嵌套关系, 也见过这个相关的问题,但它没有意义.至少它确实让我想到,我应该看到下拉行为就像股票Django Forms一样.
最终我想要一种让我们在创建/更新Bar时选择现有Foo的方法我相信我可以用TemplateHTMLRenderer手工制作一个将表单字段更改为完整JSON数据的表单,即指向现有的新Bar Foo,假设我在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')
Run Code Online (Sandbox Code Playgroud)
我知道要保存嵌套数据,我的序列化程序需要更新和创建.现在实现这一点.但我无法理解,如果让DRF填充一些具有Foo选项表示的选择输入,我该怎么做?
我错过了一些明显的是吗?这里是RTFM(再次)downvotes:/
小智 -2
这是五个月前的事了,所以你现在可能已经有了答案,但我的谷歌搜索把我带到了这里。
因此,如果您或其他人碰巧来到这里,我发现最有效的答案是:
基本上,您需要以两种方式之一告诉它哪个字段或多个字段用作下拉列表的字符串。
| 归档时间: |
|
| 查看次数: |
1866 次 |
| 最近记录: |