【发布时间】:2018-04-12 07:43:47
【问题描述】:
确凿的事实: 我正在使用 Django 2.0 和 python 3.6,如果有什么不同的话。
我想要实现的是指向属于摘要的对象列表的链接。 我的 models.py 中有一个 ManyToOne 关系。
class Summary(models.model):
type=models.CharField
class Object(models.Model):
summary= models.ForeignKey(Summary, on_delete=models.CASCADE)
在 urls.py 中
object_list= views.ObjectListViewSet.as_view({
'get': 'list'
})
urlpatterns = format_suffix_patterns([
url(r'^summary/(?P<pk>[^/.]+)/objects/$', object_list, name='summary-objects')
])
现在的想法是让用户可以点击可浏览 API 中的 URL 并获取所有对象。 因此,我尝试在 serializers.py 中编写 MethodField。我无法在这里获得任何合理的 URL,唯一的解决方案是对其进行硬编码。
class SummarySerializer(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(
view_name="app:summary-detail")
objects= serializers.SerializerMethodField('get_obj_url')
def get_obj_url(self, obj):
pass
class Meta:
model = Summary
这可能吗? 有必要写一个MethodField吗? 如果是,我如何获得我需要的网址?
【问题讨论】:
-
rest 框架有一个特殊的反向,它将返回绝对 url,包括标题、域。 django-rest-framework.org/api-guide/reverse
标签: python django rest serialization