Django TypeError:get_object()接受1个位置参数,但给出了2个[18/May/2021 18:27:12]”;GET/api/Oxyegn/HTTP/1.1“;500 94676
我想做的是,我给出了选择域,我想 当我将该选项字段作为参数传递给url时,获取所有帖子,例如: 氧气,等离子体等,他们在我的选择领域,用户必须 在发布期间选择 我想得到json格式,只要我们请求api,就会得到它 我希望这些信息基于我提供的选择文件,但是 获取错误 RESTAPI视图Django TypeError:get_object()接受1个位置参数,但给出了2个[18/May/2021 18:27:12]”;GET/api/Oxyegn/HTTP/1.1“;500 94676,django,django-rest-framework,Django,Django Rest Framework,我想做的是,我给出了选择域,我想 当我将该选项字段作为参数传递给url时,获取所有帖子,例如: 氧气,等离子体等,他们在我的选择领域,用户必须 在发布期间选择 我想得到json格式,只要我们请求api,就会得到它 我希望这些信息基于我提供的选择文件,但是 获取错误 RESTAPI视图 class PostRestApi(APIView): def get_对象(自身,**kwargs): 尝试: 返回Post.objects.get(help\u type=kwargs.get('help\u
class PostRestApi(APIView):
def get_对象(自身,**kwargs):
尝试:
返回Post.objects.get(help\u type=kwargs.get('help\u type'))
除Post.DoesNotExist外:
提高Http404
def get(自我、请求、**kwargs):
posts=self.get\u对象(kwargs.get('help\u type'))
序列化程序=后序列化程序(posts)
返回响应(serializer.data)
>序列化程序类
类后序列化程序(serializers.Serializer):
title=serializers.CharField(最大长度=100)
content=serializers.CharField()
日期=序列化程序.DateTimeField(默认值=时区.now)
help\u type=serializers.CharField()
我的后模特
选择=(
(“1”,“血浆”),
(“2”、“氧气”),
(“3”,“床”),
(“4”,“紧急情况”)
)
班级职务(models.Model):
title=models.CharField(最大长度=100)
content=models.TextField()
date=models.DateTimeField(默认值=时区.now)
author=models.ForeignKey(用户,on_delete=models.CASCADE)
help_type=models.CharField(最大长度=300,选项=choices,null=True)
网址
路径('api/',PostRestApi.as_view(),name='post-api')
您的方法get\u object
只接受关键字参数,而不是位置参数self
,因此,它不是:
posts = self.get_object(kwargs.get('help_type'))
你应该写:
posts = self.get_object(help_type=kwargs.get('help_type'))
使用def get_object(self,*args,**kwargs)
那么如果你使用posts=self.get_object(kwargs.get('help_type'))
你可以访问help_type=args[0]
或者如果你使用posts=self.get_object(help_type=kwargs.get('help_type'))
你可以访问help_type=kwargs.get('help_type')
最好将属性声明为def get\u object(self、help\u type、*args、**kwargs)
并像return Post.objects.get(help\u type=help\u type)
类PostRestApi(APIView)那样使用它:
def get_对象(自身):
尝试:
return Post.objects.get(help_type=self.kwargs.get('help_type'))#Change1
除Post.DoesNotExist外:
提高Http404
def get(自我、请求、**kwargs):
posts=self.get_object()#Change2
序列化程序=后序列化程序(posts)
返回响应(serializer.data)
- #更改1:
更改为def get_对象(self,**kwargs):
因为get对象以self为参数def get_对象(self):
- #更改2:
更改为posts=self.get\u对象(kwargs.get('help\u type'))
,因为可以从self参数访问kwargsposts=self.get\u对象()
posts=self.get\u对象(help\u type=kwargs.get('help\u type'))
或posts=self.get\u对象(**kwargs)
posts = self.get_object(help_type=kwargs.get('help_type'))