Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对于Django Rest框架,HyperLinkedRelatedField和HyperlinkedEntityField的用例有什么区别?_Python_Django_Django Rest Framework - Fatal编程技术网

Python 对于Django Rest框架,HyperLinkedRelatedField和HyperlinkedEntityField的用例有什么区别?

Python 对于Django Rest框架,HyperLinkedRelatedField和HyperlinkedEntityField的用例有什么区别?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我当然已经看过这些文档了,但我想知道是否有人能更简洁地解释一下这些领域之间用例和应用程序的区别。为什么一个使用一个字段而不是另一个字段?对于OneTONE关系,这些字段之间会有区别吗?显而易见的答案是,hyperlinkedEntityField只指向当前对象,而HyperLinkedRelatedField则指向当前对象引用的对象。我怀疑二者的不同之处在于,为了找到相关模型的URL路由,标识字段需要做的工作更少(因为相关模型是当前模型),而相关字段必须实际为其他模型找出正确的URL 换句话说,

我当然已经看过这些文档了,但我想知道是否有人能更简洁地解释一下这些领域之间用例和应用程序的区别。为什么一个使用一个字段而不是另一个字段?对于OneTONE关系,这些字段之间会有区别吗?

显而易见的答案是,
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字段
属性```