Я делаю 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)
Можете ли вы взглянуть и сказать, что я делаю здесь не так?
Также попробуйте объяснить, как все работает в бэкэнде