Как получить доступ к какому-либо конкретному полю из моего файла serializer.py? - PullRequest
0 голосов
/ 03 апреля 2019

Я делаю API для webhook. У меня проблема, когда я пытаюсь получить доступ только к одному полю из моего Классового сообщения в models.py.

Models.py

from django.db import models
from django.utils import timezone

from django_hstore import hstore


class WebhookTransaction(models.Model):
    UNPROCESSED = 1
    PROCESSED = 2
    ERROR = 3

    STATUSES = (
        (UNPROCESSED, 'Unprocessed'),
        (PROCESSED, 'Processed'),
        (ERROR, 'Error'),
    )

    date_generated = models.DateTimeField()
    date_received = models.DateTimeField(default=timezone.now)
    body = hstore.SerializedDictionaryField()
    request_meta = hstore.SerializedDictionaryField()
    status = models.CharField(max_length=250, choices=STATUSES, default=UNPROCESSED)

    objects = hstore.HStoreManager()

    def __unicode__(self):
        return u'{0}'.format(self.date_event_generated)


class Message(models.Model):
    team_id = models.CharField(max_length=250)
    team_domain = models.CharField(max_length=250)
    channel_id = models.CharField(max_length=250)
    channel_name = models.CharField(max_length=250)
    user_id = models.CharField(max_length=250)
    user_name = models.CharField(max_length=250)
    text = models.TextField()
    trigger_word = models.CharField(max_length=250)

    def __unicode__(self):
        return u'{}'.format(self.user_name)

serializer.py

from rest_framework import serializers
from slack.models import WebhookTransaction, Message


class WebhookTransactionSerializer(serializers.ModelSerializer):
    class Meta:
        model = WebhookTransaction
        fields = '_all__'



class MessageSerializer(serializers.ModelSerializer):
    class Meta:
        model = Message
        fields = ['team_id']

Теперь, когда я пытаюсь получить доступ только к 'team_id' из моделей, это дает мне эту ошибку

return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "slack_message" does not exist
LINE 1: INSERT INTO "slack_message" ("team_id", "team_domain", "chan...
                    ^

Теперь мой вопрос: должен ли я пройти все поле, чтобы это работало? Если нет, то как я могу получить доступ только к одному полю из списка?

Чтобы узнать больше, вот мой код views.py

from rest_framework.views import APIView
from django.http import HttpResponse, JsonResponse
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from django.views.decorators.csrf import csrf_exempt
from slack.models import WebhookTransaction
from slack.serializers import WebhookTransactionSerializer
from slack.models import Message
from slack.serializers import MessageSerializer
from rest_framework.response import Response
import requests



class DRSWebhookTransactionView(APIView):
    def post(self, request, *args, **kwargs):
        if request.method == 'GET':
            webhooktransaction = WebhookTransaction.objects.all()
            serializer = WebhookTransactionSerializer(webhooktransaction, many=True)
            return JsonResponse(serializer.data, safe=False)

        elif request.method == 'POST':
            data = JSONParser().parse(request)
            serializer = WebhookTransactionSerializer(data=data)
            if serializer.is_valid():
                serializer.save()
                return JsonResponse(serializer.data, status=201)
            return JsonResponse(serializer.errors, status=400)


class DRSMessageView(APIView):
    def post(self, request, *args, **kwargs):
        if request.method == 'GET':
            message = Message.objects.all()
            serializer = MessageSerializer(message, many=True)
            return JsonResponse(serializer.data, safe=False)

        elif request.method == 'POST':
            data = JSONParser().parse(request)
            serializer = MessageSerializer(data=data)
            if serializer.is_valid():
                serializer.save()
                return JsonResponse(serializer.data, status=201)
            return JsonResponse(serializer.errors, status=400)

Можете ли вы взглянуть и сказать, что я делаю здесь не так? Также попробуйте объяснить, как все работает в бэкэнде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...