POST, DELETE method записать в таблицу

Подскажите, как записать в таблицу методы post, delete Например, есть модель users. И модель tags (связанная по many to many с users). На выходе нужно получить в третей таблицы такие данные:

user_id -> 1
tag_slug -> slug_name
action -> post
date_time -> 2023-11-07

или такие:

user_id -> 1
tag_slug -> slug_name
action -> delete
date_time -> 2023-11-07

Затык в action

Для того чтобы записать данные в таблицу, используя методы POST и DELETE, вам следует создать соответствующие записи в вашей базе данных в зависимости от того, какие действия вы хотите сохранить (POST или DELETE). В Django вы можете использовать модели и представления (views) для выполнения такой задачи.

Предположим, у вас есть модели User и Tag, и вы хотите записывать действия POST и DELETE в таблицу с полями user_id, tag_slug, action, и date_time. Вот как вы можете это сделать:

  1. Создайте модель для записей о действиях (например, UserAction):
from django.db import models

class UserAction(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    tag = models.ForeignKey(Tag, on_delete=models.CASCADE)
    action = models.CharField(max_length=6, choices=[('post', 'POST'), ('delete', 'DELETE')])
    date_time = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'{self.user.username} {self.action} {self.tag.slug} on {self.date_time}'
  1. Создайте представления для обработки POST и DELETE запросов и создания записей UserAction. В представлениях вы должны проверять метод запроса и создавать записи в таблице UserAction в зависимости от типа запроса.
from django.http import JsonResponse
from .models import UserAction

def post_action(request, user_id, tag_slug):
    # Получите пользователя и метку по user_id и tag_slug
    user = User.objects.get(id=user_id)
    tag = Tag.objects.get(slug=tag_slug)

    # Создайте запись POST-действия
    UserAction.objects.create(user=user, tag=tag, action='post')

    return JsonResponse({'message': 'POST action recorded'})

def delete_action(request, user_id, tag_slug):
    # Получите пользователя и метку по user_id и tag_slug
    user = User.objects.get(id=user_id)
    tag = Tag.objects.get(slug=tag_slug)

    # Создайте запись DELETE-действия
    UserAction.objects.create(user=user, tag=tag, action='delete')

    return JsonResponse({'message': 'DELETE action recorded'})
  1. Настройте маршруты для ваших представлений, чтобы их можно было вызвать с помощью POST и DELETE запросов.
Back to Top