Python Django Rest框架测试HyperlinkedRelatedField
我有一个使用Django Rest Framework 3.3.2和Python 3.4的Django 1.8.9应用程序 我愿意测试我的API是否能正常工作 我被困在一个测试中,该测试旨在验证我是否可以通过API将数据发布到模型中。问题是:此模型与另一个模型存在外键关系。此外键由HyperlinkedModelSerializer转换为超链接 e、 g: 这是我的测试:(重要的部分是data={…}) 如果我硬写超链接,这个测试可以工作,但是我想以一种通用的方式构建它。 我可以轻松检索相关字段的id。我想在我的测试中获得超链接 提前感谢您的帮助Python Django Rest框架测试HyperlinkedRelatedField,python,django,rest,python-3.x,django-rest-framework,Python,Django,Rest,Python 3.x,Django Rest Framework,我有一个使用Django Rest Framework 3.3.2和Python 3.4的Django 1.8.9应用程序 我愿意测试我的API是否能正常工作 我被困在一个测试中,该测试旨在验证我是否可以通过API将数据发布到模型中。问题是:此模型与另一个模型存在外键关系。此外键由HyperlinkedModelSerializer转换为超链接 e、 g: 这是我的测试:(重要的部分是data={…}) 如果我硬写超链接,这个测试可以工作,但是我想以一种通用的方式构建它。 我可以轻松检索相关字段
干杯 您应该看看如何检索url:
def get_url(self, obj, view_name, request, format):
"""
Given an object, return the URL that hyperlinks to the object.
May raise a `NoReverseMatch` if the `view_name` and `lookup_field`
attributes are not configured to correctly match the URL conf.
"""
# Unsaved objects will not yet have a valid URL.
if hasattr(obj, 'pk') and obj.pk in (None, ''):
return None
lookup_value = getattr(obj, self.lookup_field)
kwargs = {self.lookup_url_kwarg: lookup_value}
return self.reverse(view_name, kwargs=kwargs, request=request, format=format)
self.reverse
只是django的正常reverse
功能。
因此,基本上,您只需要视图\u名称
和查找\u值
,在您的情况下,这是相关字段的id
def get_url(self, obj, view_name, request, format):
"""
Given an object, return the URL that hyperlinks to the object.
May raise a `NoReverseMatch` if the `view_name` and `lookup_field`
attributes are not configured to correctly match the URL conf.
"""
# Unsaved objects will not yet have a valid URL.
if hasattr(obj, 'pk') and obj.pk in (None, ''):
return None
lookup_value = getattr(obj, self.lookup_field)
kwargs = {self.lookup_url_kwarg: lookup_value}
return self.reverse(view_name, kwargs=kwargs, request=request, format=format)