Python 对于Django Rest框架,HyperLinkedRelatedField和HyperlinkedEntityField的用例有什么区别?
我当然已经看过这些文档了,但我想知道是否有人能更简洁地解释一下这些领域之间用例和应用程序的区别。为什么一个使用一个字段而不是另一个字段?对于OneTONE关系,这些字段之间会有区别吗?显而易见的答案是,Python 对于Django Rest框架,HyperLinkedRelatedField和HyperlinkedEntityField的用例有什么区别?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我当然已经看过这些文档了,但我想知道是否有人能更简洁地解释一下这些领域之间用例和应用程序的区别。为什么一个使用一个字段而不是另一个字段?对于OneTONE关系,这些字段之间会有区别吗?显而易见的答案是,hyperlinkedEntityField只指向当前对象,而HyperLinkedRelatedField则指向当前对象引用的对象。我怀疑二者的不同之处在于,为了找到相关模型的URL路由,标识字段需要做的工作更少(因为相关模型是当前模型),而相关字段必须实际为其他模型找出正确的URL 换句话说,
hyperlinkedEntityField
只指向当前对象,而HyperLinkedRelatedField
则指向当前对象引用的对象。我怀疑二者的不同之处在于,为了找到相关模型的URL路由,标识字段需要做的工作更少(因为相关模型是当前模型),而相关字段必须实际为其他模型找出正确的URL
换句话说,
hyperlinkedEntityField
重量更轻(效率更高),但不适用于当前模型以外的模型。您可以使用HyperlinkedEntityField
链接到当前正在序列化的对象,使用HyperlinkedRelatedField
链接到与正在序列化的对象相关的对象
因此,对于一对一关系、外键关系、多对多关系,以及基本上涉及关系的任何其他关系(在Django模型中),您需要使用一个HyperlinkedRelatedField
。唯一使用HyperlinkedRelatedField
的时间是url
字段,您可以在序列化程序中包含该字段以指向当前对象
在Django REST framework 3.0.0中,有一个
HyperlinkedRelatedField
和HyperlinkedEntityField
之间
自动设置为源
(当前对象)*
- 它被设置为
,因此无法更改read_only=True
HyperlinkedRelatedField
,与设置一个HyperlinkedEntityField
完全相同
在Django REST framework的旧版本(3.0.0之前)中,
hyperlinkedEntityField
曾经是解析当前对象url的专用字段。它接受了一组稍有不同的参数,并且不是HyperlinkedRelatedField
的子类,对于url
字段,我相信您指的是HyperlinkedEntityField
?在您对这两个差异的描述中,项目符号适用于HyperlinkedEntityField
,对吗?“HyperlinkedRelatedField唯一使用的时间是url字段,您可以在序列化程序中包含该字段以指向当前对象。”
我认为回答者的意思是hyperlinkedEntityField
而不是HyperlinkedRelatedField
。我试图在截断数据库后添加数据,但在大量数据之后,我在hyperlinkedEntityField中出错,例如“``无法使用视图名称“作业详细信息”解析超链接关系的URL”。您可能未能将相关模型包括在API中,或者在此字段上错误配置了lookup\u字段
属性```