Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django REST框架-get_queryset:&x27;MyModel';对象没有属性';型号';_Django_Django Rest Framework - Fatal编程技术网

Django REST框架-get_queryset:&x27;MyModel';对象没有属性';型号';

Django REST框架-get_queryset:&x27;MyModel';对象没有属性';型号';,django,django-rest-framework,Django,Django Rest Framework,我在Django REST框架中编辑查询集时遇到问题。 基本上,我需要过滤查询并返回单个查询,因此我的DRF视图如下所示: class MyModelViewSet(viewsets.ModelViewSet): queryset = MyModel.objects.all() serializer_class = MyModelSerializer def get_queryset(self): start = self.kwargs['start']

我在Django REST框架中编辑查询集时遇到问题。 基本上,我需要过滤查询并返回单个查询,因此我的DRF视图如下所示:

class MyModelViewSet(viewsets.ModelViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

    def get_queryset(self):
        start = self.kwargs['start']
        end = self.kwargs['end']
        qs, created = MyModel.objects.get_or_create(start=start, end=end)
        return qs
因此,我返回单个模型实例,但当我尝试在DRF web界面上获得access true时,我得到一个错误
“MyModel”对象没有属性“model”

回溯:

File "/Users/stay-wide-awake/code/env/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/stay-wide-awake/code/env/lib/python3.4/site-packages/django/views/decorators/csrf.py" in wrapped_view
  58.         return view_func(*args, **kwargs)
File "/Users/stay-wide-awake/code/env/lib/python3.4/site-packages/rest_framework/viewsets.py" in view
  85.             return self.dispatch(request, *args, **kwargs)
File "/Users/stay-wide-awake/code/env/lib/python3.4/site-packages/rest_framework/views.py" in dispatch
  456.             response = self.handle_exception(exc)
File "/Users/stay-wide-awake/code/env/lib/python3.4/site-packages/rest_framework/views.py" in dispatch
  444.             self.initial(request, *args, **kwargs)
File "/Users/stay-wide-awake/code/env/lib/python3.4/site-packages/rest_framework/views.py" in initial
  359.         self.check_permissions(request)
File "/Users/stay-wide-awake/code/env/lib/python3.4/site-packages/rest_framework/views.py" in check_permissions
  304.             if not permission.has_permission(request, self):
File "/Users/stay-wide-awake/code/asp/src/apps/api2/permission.py" in has_permission
  34.         perms = self.get_required_permissions(request.method, queryset.model)

Exception Type: AttributeError at /api/v2/geo/36.606111,-118.062778|36.578581,-120.291994/
Exception Value: 'MyModel' object has no attribute 'model'
路由器和所有其他部件正常(通过打印测试:)


如果您有任何提示,我们将不胜感激。

通过
MyModel.objects.get\u或\u create(start=start,end=end)
收到的
object
不是查询集,因此您将收到此错误

Django的
get\u或\u create()
返回一个
(object,created)
元组,其中
object
是检索或创建的对象,
created
是一个布尔值,指定是否创建了新对象

get_queryset()
方法中,您正在将queryset
qs
设置为接收到的
对象,而实际上它是一个模型对象

get\u queryset()
应返回一个
queryset
,而不是您正在执行的模型对象。

您可以执行以下操作:

def get_queryset(self):
    start = self.kwargs['start']
    end = self.kwargs['end']
    mymodel_obj, created = MyModel.objects.get_or_create(start=start, end=end)
    return MyModel.objects.filter(id=mymodel_obj.id) # returns a queryset now

通过
MyModel.objects.get\u或\u create(start=start,end=end)
接收的
对象
不是查询集,因此出现此错误

Django的
get\u或\u create()
返回一个
(object,created)
元组,其中
object
是检索或创建的对象,
created
是一个布尔值,指定是否创建了新对象

get_queryset()
方法中,您正在将queryset
qs
设置为接收到的
对象,而实际上它是一个模型对象

get\u queryset()
应返回一个
queryset
,而不是您正在执行的模型对象。

您可以执行以下操作:

def get_queryset(self):
    start = self.kwargs['start']
    end = self.kwargs['end']
    mymodel_obj, created = MyModel.objects.get_or_create(start=start, end=end)
    return MyModel.objects.filter(id=mymodel_obj.id) # returns a queryset now