python – Django-Rest-Framework.通过查询参数实现超链接实体
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django-Rest-Framework.通过查询参数实现超链接实体,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1934字,纯文字阅读大概需要3分钟。
内容图文
![python – Django-Rest-Framework.通过查询参数实现超链接实体](/upload/InfoBanner/zyjiaocheng/794/2b8418f5782b4906b1a6990293398c20.jpg)
我有两个模型:Field和Set.而且我希望拥有构成具体集合的Fields的超链接.
例如:
url:sets /应该返回[{‘title’:’dimension’,’fieldsLink’:’#url-to-enpoin’}]
写这样的东西并不复杂:
class Field(models.Model):
title = models.CharField(max_length=255, blank=True, null=True)
set = models.ForeignKey(Set, related_name='fields', blank=True, null=True)
class Set(models.Model):
title = models.CharField(max_length=255, blank=True, null=True, unique=True)
slug = models.SlugField(unique=True)
class SetSerializer(serializers.HyperlinkedModelSerializer):
field_list = serializers.HyperlinkedIdentityField(
view_name='apiv1:setfields-list',
lookup_field='slug')
class Meta:
model = Set
fields = ('title', 'field_list')
urlpatterns = patterns('',
url(r'^fields/$', views.FieldView.as_view(), name='fields-list'),
url(r'^sets/$', views.SetView.as_view(), name='sets-list'),
url(r'^sets/(?P<slug>[\d\w\-]+)/fields/$', views.SetFieldView.as_view(), name='setfields-list'), # this url should be removed
)
但是如何通过url(如fields /?set = dimensional(!query parameter))而不是sets / dimension / fields /(url中的参数)来超链接设置到字段?
有没有内置的方法来代替覆盖HyperlinkedIdentityField?
解决方法:
您可以通过两种不同的方式执行此操作:使用自定义的HyperlinkedRelatedField或调用的序列化程序上的自定义方法.
@kharandziuk最初在问题中提供了自定义字段.
class CustomHyperlinkedIdentityField(HyperlinkedIdentityField):
def get_url(self, obj, view_name, request, format):
from rest_framework.reverse import reverse
lookup_field_value = getattr(obj, self.lookup_field, None)
result = '{}?{}'.format(
reverse(view_name, kwargs={}, request=request, format=format),
urllib.urlencode({self.lookup_field: lookup_field_value})
)
return result
如果您不想创建自己的自定义字段,可以在序列化程序上创建一个返回特定URL的方法.您可能需要使用SerializerMethodField,以及类似于序列化程序的方法
def get_the_url(self, obj):
return self.context["request"].build_absolute_url("/api/fields") + "?set=" + obj.title
内容总结
以上是互联网集市为您收集整理的python – Django-Rest-Framework.通过查询参数实现超链接实体全部内容,希望文章能够帮你解决python – Django-Rest-Framework.通过查询参数实现超链接实体所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。