- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图返回特定于用户的单个对象(不是查询集),而不必在请求的 URL 中指定标识符/pk。每个用户都有一个组织 FK。
即http://website/organisation
而不是 http://website/organisation/1
我收到以下错误,因为它需要这个标识符:
AssertionError:应使用名为“user__organisation_id”的 URL 关键字参数调用 View OrganisationDetail。修复您的 URL 配置,或正确设置 View 上的 .lookup_field 属性。
在使用 RetrieveModelMixin/GenericAPIView 时我需要如何指定/指定什么,以便它返回由 FK 链接的单个对象?
我的 View 类:
class OrganisationDetail(
mixins.RetrieveModelMixin, mixins.UpdateModelMixin,generics.GenericAPIView
):
serializer_class = OrganisationDetailSerializer
lookup_field = 'pk' # I know this is the default and there's no need to specify
def get_queryset(self):
return Organisation.objects.filter(pk=self.request.user.organisation_id)
def get(self, request, *args, **kwargs):
return self.retrieve(request, *args, **kwargs)
def put(self, request, *args, **kwargs):
return self.update(request, *args, **kwargs)
相关网址:
url(r'^api/v1/organisation/$', OrganisationDetail.as_view()),
我的模型:
class Person(AbstractUser):
organisation = models.ForeignKey(
Organisation, related_name='members', null=True
)
is_admin = models.BooleanField(default=False)
def __str__(self):
return self.first_name + " " + self.last_name + " - " + self.email
最佳答案
对于详细 View ,您需要覆盖 get_object()
,而不是 get_queryset()
。您仍然需要权限检查,所以我建议您查看源代码。首先删除您的 get_queryset()
方法,然后为初学者尝试这个:
# inside OrganisationDetail
queryset = Organisation.objects.all()
def get_object(self):
queryset = self.filter_queryset(self.get_queryset())
# make sure to catch 404's below
obj = queryset.get(pk=self.request.user.organisation_id)
self.check_object_permissions(self.request, obj)
return obj
关于python - Django Rest Framework - AssertionError 修复您的 URL conf,或在 View 上正确设置 `.lookup_field` 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43859053/
我将在 Django 中使用 UpdateAPIView。当我完成 View 并运行服务器时,出现以下错误。 Expected view updateViewSet to be called with
我在“/me”端点上有一个 View 集,不需要 lookup_field 进行详细说明,因为它使用当前请求用户进行过滤,检索单个结果。 class ClientProfileDetail(
我有多个 API,它们在历史上使用 id 作为查找字段: /api/organization/10 我有一个使用这些 API 的前端。 我正在构建一个新界面,出于某些原因,我想使用 slug 而不是
使用 Django REST Framework 3.12.4,如果 ViewSet 具有外键查找字段,我无法正确获取 ViewSet 的 URL。 我在 models.py 中有以下内容: clas
我有一个用 GenericAPIView 扩展的类, 我可以在我的函数中访问查找字段,但我不能在查询集函数中使用它。 class SellerItemAPIView(GenericAPIView, L
我正在尝试在两个实体之间设置查找字段,但我无法修复此错误。 我已经尝试过这些解决方案,但没有一个对我有用(我做错了什么?): Django Rest Framework, improperly con
我目前正在学习如何为我的公司构建 API。我从事这项工作的时间并不长,所以目前我基本上是一名初级开发人员。 按照一些教程,我使用基于类的 View 在非常基本的级别上启动并运行了我的 API。 我们使
我得到的错误是 ImproperlyConfigured at /usercombo/ Could not resolve URL for hyperlinked relationship using
https://gist.github.com/ranman/3d97ea9054c984bca75e 期望的行为 用户查找通过用户名进行:/api/users/randall 扬声器查找也通过用户名
我正在尝试从我的 sqlite 数据库返回项目,以便浏览器中的 url 反射(reflect) slug,而不是唯一的帖子 ID。 我之前通过使用主键进行了此工作,当单击项目详细信息的超链接时,项目会
我试图返回特定于用户的单个对象(不是查询集),而不必在请求的 URL 中指定标识符/pk。每个用户都有一个组织 FK。 即http://website/organisation 而不是 http://
我是一名优秀的程序员,十分优秀!