Django Rest Framework,超链接嵌套关系

2024-01-27

我有两个模型:User and Ticket. Ticket有一个User, User有很多Tickets

当我访问 url 时我已经完成了/用户/1/门票,我正在获取用户的门票列表。

我想使用超链接关系,这是我在用户模型表示中看到的内容:

"tickets": [
    "http://127.0.0.1:8000/tickets/5/", 
    "http://127.0.0.1:8000/tickets/6/"
]

但我希望它像

"tickets": "http://127.0.0.1:8000/users/1/tickets"

有没有办法用 DRF 做到这一点?

The url:

    url(r'^users/(?P<user_pk>\d+)/tickets/$',
    views.TicketsByUserList.as_view(),
    name='myuser-tickets'),

风景:

class TicketsByUserList(generics.ListAPIView):
    model = Ticket
    serializer_class = TicketSerializer

    def get_queryset(self):
        user_pk = self.kwargs.get('user_pk', None)
        if user_pk is not None:
            return Ticket.objects.filter(user=user_pk)
        return []

用户序列化程序(我尝试使用票证字段定义,更改类型,view_name,但没有效果):

class UserSerializer(serializers.HyperlinkedModelSerializer):
    tickets = serializers.HyperlinkedRelatedField(many=True, view_name='ticket-detail')

    class Meta:
        model = MyUser
        fields = ('id', 'nickname', 'email', 'tickets')

票证序列化器:

class TicketSerializer(serializers.HyperlinkedModelSerializer):
    user = serializers.HyperlinkedRelatedField(view_name='myuser-detail')
    liked = serializers.Field(source='liked')

    class Meta:
        model = Ticket
        fields = ('id', 'user', 'word', 'transcription', 'translation', 'liked', 'created', 'updated')

您可以使用序列化方法字段 http://django-rest-framework.org/api-guide/fields.html#serializermethodfield来定制它。像这样的事情:

class UserSerializer(serializers.HyperlinkedModelSerializer):
    tickets = serializers.SerializerMethodField('get_tickets')

    def get_tickets(self, obj):
        return "http://127.0.0.1:8000/users/%d/tickets" % obj.id

    class Meta:
        model = MyUser
        fields = ('id', 'nickname', 'email', 'tickets')

为了简洁起见,我将 URL 硬连接到其中,但您也可以进行反向查找。这基本上只是告诉它调用get_tickets方法而不是超类中的默认行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django Rest Framework,超链接嵌套关系 的相关文章

随机推荐

  • 从短代码函数内部调用 WordPress get_template_part 首先呈现模板

    我有一个页面需要允许用户输入一段文本 然后在该文本后面插入一个短代码来呈现帖子列表 然后添加更多自由格式的文本 我的想法是他们应该能够插入一个短代码来输出帖子 这样他们就可以简单地在他们希望帖子出现的地方添加短代码 我目前的逻辑是检索在自己
  • Rails form_tag url 路径

    这看起来应该很简单 但它一直给我带来问题 我有一个从模型中提取的 select tag 我想要的只是让一个人从下拉列表中选择他们的位置 按提交并将其带到该地点页面 这是我所拥有的 div p p div 问题是它当然想要一个 id但它不会拉
  • 如何从 VBA 调用 python 程序?

    正如标题所说 我有一个 python 程序 它处理我从电子邮件下载的一些数据文件 我正在编写一个vba脚本 它可以下载电子邮件附件并执行python程序来处理电子邮件附件 这样我就可以自动化我的日常工作 任何想法 一种方法是将 Python
  • 纯java sqlite库?

    I saw Java 和 SQLite https stackoverflow com questions 41233 java and sqlite 但是哪些是纯java制作的并且是平台无关的呢 另外 从哪一个开始最好 我从来没有使用过s
  • 字谜算法

    这是为文本生成字谜词的最佳方法 最多 80 个字符长度 例子 输入 狗 输出狗 dgo odg ogd gdo 神 我只是在考虑回溯解决方案 但如果文本较长 这将需要一段时间 另一个想法是我尝试字典中的所有单词 但问题并不要求真正的单词 有
  • 将 pdf 转换为矢量图像

    我正在尝试在我的网页中使用 pdf 内容 数学 我基本上想将 pdf 转换为一些矢量图像 将 pdf 转换为 swf 可以很好地完成这项工作 但由于并非每个平台都支持 flash 因此我正在尝试寻找另一种解决方案 我读过有关 svg 的内容
  • Azure DocumentDB 多租户架构

    我一直在预览期间将 DocumentDB 实现到多租户系统中 我的计划是在 DocumentDB 帐户下为每个注册的租户生成一个新数据库 大部分代码已经就位 并且测试进展非常顺利 由于 DocumentDB 已正式发布并且文档已最终确定 我
  • 使用 JavaScript 将 HTML 字符串加载到 iframe 中

    我有一串 HTML 标签 可以随时添加或更改 是否可以在运行时将该字符串加载到 Iframe 中 就好像它是 HTML 文件一样 这是针对构造 2 的 我有一个可以从 url 加载 HTML 的对象 它还可以插入 HTML 并运行脚本 但不
  • Flutter 毫不延迟地导航到屏幕

    我有一个登录屏幕 在我的表单按钮中 我进行检查 然后调用共享首选项来设置登录标志 并且 initState 我调用一个方法来检查值并重定向到主屏幕 现在一切都很顺利 但我能够看到登录表单一秒钟左右 然后我被重定向到主页 我希望根本看不到登录
  • 使用 YAML-CPP 将 YAML Emitter 内容保存到文件中

    我刚刚开始使用 yaml cpp 我设法正确构建它并运行 yaml cpp wiki 中的一些示例 但我找不到将发射器保存到文件的方法 这不可能吗 我的意思是 PyYAML 库有一个 转储 功能 yaml cpp中没有这样的功能吗 是否有一
  • Xcode 4.4 - 存在内部 API 错误

    您好 我刚刚升级到 Mountain Lion 我创建了一个空的单视图应用程序并运行它 第一次运行良好 但接下来的运行会给我 有一个内部 API错误 弹出警告两次 这与我的其他项目相同 它们一次运行正常 但在下一次运行时出现此错误 没有任何
  • PHP 会话变量足以进行用户身份验证吗?

    设想 用户登录后 将设置一个会话变量来确认其登录 在每个页面的顶部 登录会话变量被确认有效 如果不是 他们就会被踢出局 不使用持久性 cookie 仅使用session 问题 这是一个足够强大的安全措施本身 还是我应该 设置两个会话变量以验
  • 参考错误:未使用 nextjs 定义导航器

    我的代码是这样的 从 react 导入 React useEffect import alanBtn from alan ai alan sdk web const alanKey my key const App gt useEffect
  • UIScrollView 内的动态 UILabel 内容

    我有一个 UILabel 以及其他控件 存储在 UIScrollView 中 我想动态填充 UILabel 以便它自动扩展其高度以适应其内容 我只是想知道调整 UILabel 大小同时确保其父 UIScrollView 也将扩展其可滚动区域
  • Symfony2/FOSUserBundle - 多个捆绑包的路由问题

    如同this https stackoverflow com q 9826370 399584问题 我需要为我的网站的管理和前端包单独登录 管理实际上是一个单独的包 位于vendors 现在 我的路由如下所示 应用程序 配置 路由 yml
  • MVVMCross Binding 导致 Android 应用程序崩溃

    我有一个基于 Xamarin 和 MvvmCross 的 Android 应用程序 在该应用程序中 有一个带有我自己创建的 ExpandableListView 的视图 现在 此列表显示几个项目 这些项目使用 MvvmCross 绑定到其
  • 无法在 SQL Server 中的 ROW_NUMBER() 中使用别名?

    使用 sql 时 我必须创建一个按分组总和排序的 row number 列 select Sales Name SUM Sales Bill as billsum ROW NUMBER over order by billsum DESC
  • 如何建立简单的评审和5星评级系统? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对网络技术非常陌生 这基本上是我的团队正在研究的一个学期项目 我们正在开发一个食品评论网站 到目前为止 我不太确定如何实现一个简单的
  • 如何使用最新的 java sdk 3.1.2 在 couchbase 中执行批量插入

    我能够使用旧版本的 java sdk 例如 2 9 7 使用以下代码执行批量插入 public void insertAll 集合文档 Observable from documents flatMap new Func1
  • Django Rest Framework,超链接嵌套关系

    我有两个模型 User and Ticket Ticket有一个User User有很多Tickets 当我访问 url 时我已经完成了 用户 1 门票 我正在获取用户的门票列表 我想使用超链接关系 这是我在用户模型表示中看到的内容 tic