Использование JsonField в django для создания простого post api

У меня есть задача создать простой post api для отправки посетителю сообщения через контактную форму. Я создал модель с именем Contacts и создал api с помощью APIView. Но когда код был рассмотрен, мне предложили использовать jsonfield, который уже определен в модели Core. Поэтому я застрял на том, как его использовать.

Моя основная модель выглядит следующим образом:

class Core(models.Model):
    """
    Model that saves the corresponding credentials for the slug.
    """

    slug = models.CharField(max_length=255, null=False)
    example = models.JSONField(null=False, default=dict)

    def __str__(self) -> str:
        return self.slug

Я искал и нашел, что я могу передать данные словаря внутри поля примера, но я не знаю, как это использовать.

На данный момент я сделал следующее. Я создал модель чуть ниже основной модели под названием Conatcts и создал сериализатор и файлы представления.

class Contacts(models.Model):
    full_name = models.CharField(max_length=100,blank=True,default="")
    email = models.EmailField()
    phone = models.CharField(max_length= 16)
    address = models.CharField(max_length=255,blank=True,default="")
    message = RichTextField()

    def __str__(self):
        return self.email

    class Meta:
        verbose_name_plural = 'Visitor Messages'

Мое мнение:

class ContactsView(APIView):
    permission_classes = [AllowAny]

    def post(self,request):
        data = request.data
        serializer = ContactSerializer(data=data)
        if serializer.is_valid():
            serializer.save()            
            return Response({
                'message': "You message has been sent successfully.",
                 'data':serializer.data        #data in the response may not be required
            },
                            status=status.HTTP_201_CREATED,)
        return Response (serializer.errors,
                        status=status.HTTP_400_BAD_REQUEST)

Мой сериализатор:

class ContactSerializer(ModelSerializer):
    class Meta:
        model = Contacts
        fields = '__all__'

Я вижу, что Core model требует некоторого slug. Какой slug я должен передать при отправке простого сообщения от посетителя. И какие изменения я должен сделать в представлении, если использую Core model?

Мои ссылки:

urlpatterns = [
    path("core/<slug:slug>", ExampleViewSets.as_view(), name="example"),
    path('contacts/', views.ContactsView.as_view(), name='api-contacts')
]
Вернуться на верх