当前位置: 首页 > 面试题库 >

动态限制相关字段的查询集

端木高邈
2023-03-14
问题内容

我想使用Django REST Framework,限制可以在创作的相关字段中使用的值。

例如,考虑以下示例(基于http://django-rest-framework.org/api-
guide/filtering.html
上的过滤示例,但已更改为ListCreateAPIView):

class PurchaseList(generics.ListCreateAPIView)
    model = Purchase
    serializer_class = PurchaseSerializer

    def get_queryset(self):
        user = self.request.user
        return Purchase.objects.filter(purchaser=user)

在此示例中,如何确保购买者在创建时只能等于self.request.user,并且这是可浏览API渲染器中下拉列表中填充的唯一值?


问题答案:

我最终做了类似Khamaileon在这里建议的操作。基本上,我修改了序列化器以查看请求,这闻起来很不对劲,但是它完成了工作……这是它的外观(以购买示例为例):

class PurchaseSerializer(serializers.HyperlinkedModelSerializer):
    def get_fields(self, *args, **kwargs):
        fields = super(PurchaseSerializer, self).get_fields(*args, **kwargs)
        fields['purchaser'].queryset = permitted_objects(self.context['view'].request.user, fields['purchaser'].queryset)
        return fields

    class Meta:
        model = Purchase

allowed_objects是一个接受用户和查询并返回仅包含用户有权链接到的对象的过滤查询的函数。这似乎对验证和可浏览的API下拉字段都起作用。



 类似资料:
  • 问题内容: 我想编写一个查询,在其中我可以动态地将各种限制传递给SQLA Core。例如,我希望能够在查询中指定或不动态指定。通过限制指令可能会很好,或者可能会有更标准的方法。 我已经阅读了教程和API文档,但我想知道: 对于SQLA Core中的动态限制,什么是惯用合同,它将如何实施? 问题答案: 您可以毫无问题地动态构建查询。例如,您可以执行以下操作: 那里只是限制的字典,如。这将产生一个查询

  • 在我的laravel 5.4应用程序中,我有一个一对多(反向)关系。有两种型号和与场景相关。 模型上的关系为: 表具有以下字段:,,,等。 表包含以下字段:,,,等。 我想要的是,搜索条件中记录的字段'vehicles.volume'的总和。 我尝试过以下几种方法: 并导致以下错误: SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“vehicles.volume”(SQL

  • 问题内容: 如何限制JPQL命名查询的选择查询?我需要在查询级别本身而不是在Java层中完成限制!!!我正在尝试使用 但徒劳!!! 请建议 问题答案: 没有提供限制查询的机制。这通常是通过使用上的方法来实现的。如果必须避免在Java代码中指定此内容,则可以在包含查询并执行限制的数据库中进行查看。然后像将表一样将实体映射到此视图。 例:

  • 问题内容: 我正在构建一个小界面,希望用户能够写出他们的 整个 sql语句,然后查看返回的数据。但是,我不希望用户能够做任何有趣的事情,即。实际上,我希望用户能够做的唯一一件事就是运行语句。我知道没有特定的SQLite用户,所以我在考虑要制定的一套规则来拒绝某些查询。也许是正则表达式字符串之类的东西(正则表达式使我有些害怕)。关于如何做到这一点的任何想法? 问题答案: 我可以为您的问题建议另一种方

  • 我对DynamoDB上的查询/扫描限制有疑问。 我的表有1000条记录,对所有记录的查询都返回50个值,但是如果我把设为5,这并不意味着查询将返回前5个值,它只是说对5个项目的查询表(以任何顺序,所以它们可能是非常旧的项目或新的项目),所以我有可能在查询中得到0个项目。如何实际获得查询的最新5项?我需要设置一个为5(数字是例子),因为查询/扫描更多的项目会很昂贵。 该查询具有此输入 我的表的索引是

  • null 扩展 的 的web查询 只返回具有指定键和值的属性条目的Meetups:AKEY=AVALUE。 收集字段工作,如参与者: 但不是这个地图字段。 我尝试通过使用存储库来定制绑定 编辑:见上文;事实证明,这对我的代码没有任何帮助。 要求尝试两种方法返回路径,以便生成可以使用的谓词。 1是在自定义绑定中查找。我看不到任何表达地图查询的方法 2默认为Spring的bean路径。同样的表达问题。