Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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 framework Django Rest框架过滤器:AttributeError:';非类型';对象没有属性';更新';_Django Rest Framework_Django Rest Framework Filters - Fatal编程技术网

Django rest framework Django Rest框架过滤器:AttributeError:';非类型';对象没有属性';更新';

Django rest framework Django Rest框架过滤器:AttributeError:';非类型';对象没有属性';更新';,django-rest-framework,django-rest-framework-filters,Django Rest Framework,Django Rest Framework Filters,我正在使用Django Rest框架过滤器(DRFF)。 我有这两个模型定义: class Release(models.Model): application = models.ForeignKey(Application, on_delete=models.CASCADE, related_name='releases') price = models.FloatField(default=0.0) version_code = models.Inte

我正在使用Django Rest框架过滤器(DRFF)。 我有这两个模型定义

class Release(models.Model):
    application = models.ForeignKey(Application, on_delete=models.CASCADE,
        related_name='releases')
    price = models.FloatField(default=0.0)
    version_code = models.IntegerField()

class Application(models.Model):
    package_name = models.CharField(max_length=144, unique=True)
    description = models.TextField()
class ApplicationSerializer(serializers.ModelSerializer):
    releases = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = Application
        fields = '__all__'

class ReleaseSerializer(serializers.ModelSerializer):
    class Meta:
        model = Release
        fields = '__all__'
class ApplicationViewSet(viewsets.ModelViewSet):
    queryset = Application.objects.all()
    serializer_class = ApplicationSerializer
    filter_class = ApplicationFilter

class ReleaseViewSet(viewsets.ModelViewSet):
    queryset = Release.objects.all()
    serializer_class = ReleaseSerializer
    filter_class = ReleaseFilter
class ReleaseFilter(filters.FilterSet):
    class Meta:
        model = Release
        fields = {
            'price': '__all__',
            'version_code': '__all__',
        }

class ApplicationFilter(filters.FilterSet):
    releases = filters.RelatedFilter(
        ReleaseFilter,
        queryset=Release.objects.all()
    )

    class Meta:
        model = Application
        fields = {
            'package_name': '__all__',
        }
正如您所见,一个应用程序有许多版本都具有related_name='Releases'。 因此,我有两个序列化程序

class Release(models.Model):
    application = models.ForeignKey(Application, on_delete=models.CASCADE,
        related_name='releases')
    price = models.FloatField(default=0.0)
    version_code = models.IntegerField()

class Application(models.Model):
    package_name = models.CharField(max_length=144, unique=True)
    description = models.TextField()
class ApplicationSerializer(serializers.ModelSerializer):
    releases = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = Application
        fields = '__all__'

class ReleaseSerializer(serializers.ModelSerializer):
    class Meta:
        model = Release
        fields = '__all__'
class ApplicationViewSet(viewsets.ModelViewSet):
    queryset = Application.objects.all()
    serializer_class = ApplicationSerializer
    filter_class = ApplicationFilter

class ReleaseViewSet(viewsets.ModelViewSet):
    queryset = Release.objects.all()
    serializer_class = ReleaseSerializer
    filter_class = ReleaseFilter
class ReleaseFilter(filters.FilterSet):
    class Meta:
        model = Release
        fields = {
            'price': '__all__',
            'version_code': '__all__',
        }

class ApplicationFilter(filters.FilterSet):
    releases = filters.RelatedFilter(
        ReleaseFilter,
        queryset=Release.objects.all()
    )

    class Meta:
        model = Application
        fields = {
            'package_name': '__all__',
        }
这两个视图集

class Release(models.Model):
    application = models.ForeignKey(Application, on_delete=models.CASCADE,
        related_name='releases')
    price = models.FloatField(default=0.0)
    version_code = models.IntegerField()

class Application(models.Model):
    package_name = models.CharField(max_length=144, unique=True)
    description = models.TextField()
class ApplicationSerializer(serializers.ModelSerializer):
    releases = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = Application
        fields = '__all__'

class ReleaseSerializer(serializers.ModelSerializer):
    class Meta:
        model = Release
        fields = '__all__'
class ApplicationViewSet(viewsets.ModelViewSet):
    queryset = Application.objects.all()
    serializer_class = ApplicationSerializer
    filter_class = ApplicationFilter

class ReleaseViewSet(viewsets.ModelViewSet):
    queryset = Release.objects.all()
    serializer_class = ReleaseSerializer
    filter_class = ReleaseFilter
class ReleaseFilter(filters.FilterSet):
    class Meta:
        model = Release
        fields = {
            'price': '__all__',
            'version_code': '__all__',
        }

class ApplicationFilter(filters.FilterSet):
    releases = filters.RelatedFilter(
        ReleaseFilter,
        queryset=Release.objects.all()
    )

    class Meta:
        model = Application
        fields = {
            'package_name': '__all__',
        }
我有两个过滤器(使用DRFF)

class Release(models.Model):
    application = models.ForeignKey(Application, on_delete=models.CASCADE,
        related_name='releases')
    price = models.FloatField(default=0.0)
    version_code = models.IntegerField()

class Application(models.Model):
    package_name = models.CharField(max_length=144, unique=True)
    description = models.TextField()
class ApplicationSerializer(serializers.ModelSerializer):
    releases = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = Application
        fields = '__all__'

class ReleaseSerializer(serializers.ModelSerializer):
    class Meta:
        model = Release
        fields = '__all__'
class ApplicationViewSet(viewsets.ModelViewSet):
    queryset = Application.objects.all()
    serializer_class = ApplicationSerializer
    filter_class = ApplicationFilter

class ReleaseViewSet(viewsets.ModelViewSet):
    queryset = Release.objects.all()
    serializer_class = ReleaseSerializer
    filter_class = ReleaseFilter
class ReleaseFilter(filters.FilterSet):
    class Meta:
        model = Release
        fields = {
            'price': '__all__',
            'version_code': '__all__',
        }

class ApplicationFilter(filters.FilterSet):
    releases = filters.RelatedFilter(
        ReleaseFilter,
        queryset=Release.objects.all()
    )

    class Meta:
        model = Application
        fields = {
            'package_name': '__all__',
        }
我的RESTAPI正在本地主机上运行:9000/API/v1/ 但是,当我尝试查看应用程序视图时(在浏览器中:“GET/api/v1/Application/”),我得到了 此错误:“AttributeError:'NoneType'对象没有属性'update'”

这是此错误的回溯:

Internal Server Error: /api/v1/application/
Traceback (most recent call last):
  File "/home/jfsanchez/Projects/kiosko/lib/python3.5/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/home/jfsanchez/Projects/kiosko/lib/python3.5/site-packages/django/core/handlers/base.py", line 217, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/jfsanchez/Projects/kiosko/lib/python3.5/site-packages/django/core/handlers/base.py", line 215, in _get_response
    response = response.render()
  File "/home/jfsanchez/Projects/kiosko/lib/python3.5/site-packages/django/template/response.py", line 107, in render
    self.content = self.rendered_content
  File "/home/jfsanchez/Projects/kiosko/lib/python3.5/site-packages/rest_framework/response.py", line 72, in rendered_content
    ret = renderer.render(self.data, accepted_media_type, context)
  File "/home/jfsanchez/Projects/kiosko/lib/python3.5/site-packages/rest_framework/renderers.py", line 706, in render
    context = self.get_context(data, accepted_media_type, renderer_context)
  File "/home/jfsanchez/Projects/kiosko/lib/python3.5/site-packages/rest_framework/renderers.py", line 683, in get_context
    'filter_form': self.get_filter_form(data, view, request),
  File "/home/jfsanchez/Projects/kiosko/lib/python3.5/site-packages/rest_framework/renderers.py", line 618, in get_filter_form
    html = backend().to_html(request, queryset, view)
  File "/home/jfsanchez/Projects/kiosko/lib/python3.5/site-packages/django_filters/rest_framework/backends.py", line 61, in to_html
    filter_instance = filter_class(request.query_params, queryset=queryset, request=request)
  File "/home/jfsanchez/Projects/kiosko/lib/python3.5/site-packages/django_filters/filterset.py", line 186, in __init__
    self.filters = copy.deepcopy(self.base_filters)
  File "/usr/lib/python3.5/copy.py", line 182, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python3.5/copy.py", line 320, in _reconstruct
    value = deepcopy(value, memo)
  File "/usr/lib/python3.5/copy.py", line 182, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python3.5/copy.py", line 297, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python3.5/copy.py", line 155, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python3.5/copy.py", line 243, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python3.5/copy.py", line 182, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python3.5/copy.py", line 297, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python3.5/copy.py", line 155, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python3.5/copy.py", line 243, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python3.5/copy.py", line 182, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python3.5/copy.py", line 297, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python3.5/copy.py", line 155, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python3.5/copy.py", line 243, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python3.5/copy.py", line 182, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python3.5/copy.py", line 297, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python3.5/copy.py", line 155, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python3.5/copy.py", line 243, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python3.5/copy.py", line 182, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python3.5/copy.py", line 297, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python3.5/copy.py", line 155, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python3.5/copy.py", line 243, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python3.5/copy.py", line 182, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python3.5/copy.py", line 297, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python3.5/copy.py", line 155, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python3.5/copy.py", line 243, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python3.5/copy.py", line 182, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python3.5/copy.py", line 297, in _reconstruct
    state = deepcopy(state, memo)
  File "/usr/lib/python3.5/copy.py", line 155, in deepcopy
    y = copier(x, memo)
  File "/usr/lib/python3.5/copy.py", line 243, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/usr/lib/python3.5/copy.py", line 182, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib/python3.5/copy.py", line 306, in _reconstruct
    y.__dict__.update(state)
AttributeError: 'NoneType' object has no attribute 'update'
[09/Nov/2017 14:49:29] "GET /api/v1/application/ HTTP/1.1" 500 664601
这是我(主要)的VirtualNV堆栈:

Django==1.11.4
django-filters==0.2.1
djangorestframework==3.6.4
djangorestframework-filters==0.10.2
有人能帮我修一下吗? 这里有什么问题?我做错了什么?
谢谢

你有什么解决办法吗?我在render json_api_meta.update(self.extract_root_meta(serializer,serializer_data))AttributeError中的第569行得到了这个结果:“NoneType”对象没有属性“update”,您得到了任何解决方案吗?我在render json_api_meta.update(self.extract_root_meta(serializer,serializer_data))AttributeError中的第569行得到了这个结果:“NoneType”对象没有属性“update”