Python Django Rest框架不';t render generics.ListAPIView,带有GM2MField的模型

Python Django Rest框架不';t render generics.ListAPIView,带有GM2MField的模型,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,首先,对不起,我的英语不是我的母语 我有下一个问题: 我在Django应用程序中工作,我有这样一个模型: class AlarmEvent(models.Model): # Alarm types USER = 'US' DEVICE = 'DV' NO_DEVICE = 'ND' ALARM_CHOICES = ( (USER, 'User'), (DEVICE, 'Device'), (NO_DEVICE, 'No-Device') ) alarm = m

首先,对不起,我的英语不是我的母语

我有下一个问题: 我在Django应用程序中工作,我有这样一个模型:

class AlarmEvent(models.Model):
# Alarm types

USER = 'US'
DEVICE = 'DV'
NO_DEVICE = 'ND'

ALARM_CHOICES = (
    (USER, 'User'),
    (DEVICE, 'Device'),
    (NO_DEVICE, 'No-Device')
)
    alarm = models.ForeignKey(Alarm, on_delete=models.CASCADE, null=True)
    alarm_type = models.CharField(max_length=2, choices=ALARM_CHOICES,       default=USER)
    created = models.DateTimeField(auto_now_add=True)
    finished = models.DateTimeField(null=True)
    content_type = GM2MField()
    description = models.CharField(max_length=255, default='description', null=True)

    def __str__(self):
        return self.alarm_type + '-' + str(self.pk)
如您所见,我使用第三方应用程序中的GM2MField()来建立通用的M2M关系。 对于此模型,我有以下序列化程序:

class AlarmEventSerializer(serializers.ModelSerializer):
    class Meta:
        model = AlarmEvent
        fields = ('id', 'alarm', 'alarm_type', 'created', 'finished', 'device', 'variables', 'content_type', 'description')
我正在使用此视图:

class AlarmEventList(generics.ListAPIView):

    ''' List AlarmEvents by filters, or create a new AlarmEvent '''

    serializer_class = AlarmEventSerializer
    filter_backends = (filters.DjangoFilterBackend, )
    filter_class = AlarmEventFilter

    def get_queryset(self):
        ''' Getting events which the user is subscribed '''
        #TODO: Fix api/alarms/events endpoint
        alarms = Subscription.objects.filter(Q(user__in=[self.request.user]) | Q(group__in=self.request.user.groups.all())).values_list('alarm', flat=True)

        return AlarmEvent.objects.filter(alarm__in=alarms)

    def post(self, request, format=None):
        ''' Create new event '''
        serializer = AlarmEventSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
我的问题是下一个错误:

环境:

请求方法:获取请求URL:

Django版本:2.0.3 Python版本:3.6.3已安装的应用程序: ['alarms'、'fotuto_models'、'rest_framework'、'django_filters', “监护人”、“护卫员”、“django.contrib.admin”, 'django.contrib.auth'、'django.contrib.contenttypes'、'gm2m', 'django.contrib.sessions'、'django.contrib.messages', “django.contrib.staticfiles”]已安装的中间件: ['corsheaders.middleware.corsmidleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.security.SecurityMiddleware', “django.contrib.sessions.middleware.SessionMiddleware”, 'django.middleware.common.CommonMiddleware', “django.middleware.csrf.CsrfViewMiddleware”, 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.xframeoptions中间件']

模板错误:在模板中 /usr/local/lib/python3.6/dist-packages/rest\u framework/templates/rest\u framework/horizontal/select\u multiple.html, 第15行“非类型”对象没有属性“\u meta”5时出错: 6:7:{%if field.label%}8:
9:{field.label}}10:
11:{%endif%}12:13:14:15:{%for select in field.iter_options%} 16:{%if select.start_option_group%}17:
18:{%elif select.end\u option\u group%}19:20:
{%else%}21:{{ select.display_text}}22:{%endif%}23:
{%empty%}24:{{no_items}}25: {%endfor%}

回溯:

文件 “/usr/local/lib/python3.6/dist-packages/django/core/handlers/exception.py” 在内部 35响应=获取响应(请求)

文件 “/usr/local/lib/python3.6/dist-packages/django/core/handlers/base.py” 你得到了什么回应 158response=self.process\u异常\u由\u中间件(e,请求)

文件 “/usr/local/lib/python3.6/dist-packages/django/core/handlers/base.py” 你得到了什么回应 156response=response.render()

文件 “/usr/local/lib/python3.6/dist-packages/django/template/response.py” 渲染中 106self.content=自渲染内容

文件 中的“/usr/local/lib/python3.6/dist packages/rest\u framework/response.py” 渲染内容 72ret=renderer.render(self.data、接受的媒体类型、上下文)

文件 “/usr/local/lib/python3.6/dist packages/rest\u framework/renders.py” 渲染中 718context=self.get\u context(数据、接受的\u媒体\u类型、渲染器\u context)

文件 “/usr/local/lib/python3.6/dist packages/rest\u framework/renders.py” 在get_上下文中 691. 'post_表单:self.get_rendered_html_表单(数据、视图、“post”、请求)

文件 “/usr/local/lib/python3.6/dist packages/rest\u framework/renders.py” 以get_rendered_html_形式 514返回self.render\u form\u for\u序列化程序(序列化程序)

文件 “/usr/local/lib/python3.6/dist packages/rest\u framework/renders.py” 以呈现形式为序列化程序呈现 524{'style':{'template_pack':'rest_framework/horizontal'}

文件 “/usr/local/lib/python3.6/dist packages/rest\u framework/renders.py” 渲染中 375返回template.render(上下文)

文件 “/usr/local/lib/python3.6/dist-packages/django/template/backends/django.py” 渲染中 61返回self.template.render(上下文)

文件“/usr/local/lib/python3.6/dist-packages/django/template/base.py” 渲染中 175返回self.\u呈现(上下文)

文件“/usr/local/lib/python3.6/dist-packages/django/template/base.py” 在渲染中 167返回self.nodelist.render(上下文)

文件“/usr/local/lib/python3.6/dist-packages/django/template/base.py” 渲染中 943位=节点。带注释的渲染(上下文)

文件“/usr/local/lib/python3.6/dist-packages/django/template/base.py” 在render_注释中 910返回self.render(上下文)

文件 “/usr/local/lib/python3.6/dist-packages/django/template/defaulttags.py” 渲染中 211nodelist.append(node.render_注释(上下文))

文件“/usr/local/lib/python3.6/dist-packages/django/template/base.py” 在render_注释中 910返回self.render(上下文)

文件 “/usr/local/lib/python3.6/dist-packages/django/template/defaulttags.py” 渲染中 314返回nodelist.render(上下文)

文件“/usr/local/lib/python3.6/dist-packages/django/template/base.py” 渲染中 943位=节点。带注释的渲染(上下文)

文件“/usr/local/lib/python3.6/dist-packages/django/template/base.py” 在render_注释中 910返回self.render(上下文)

文件 中的“/usr/local/lib/python3.6/dist-packages/django/template/library.py” 提供 192输出=self.func(*已解析参数,**已解析参数)

文件 “/usr/local/lib/python3.6/dist packages/rest\u framework/templatetags/rest\u framework.py” 在render_字段中 90返回渲染器。渲染_字段(字段,样式)

文件 “/usr/local/lib/python3.6/dist packages/rest\u framework/renders.py” 在render_字段中 354返回te