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
. Вот как вы можете это сделать:
- Создайте модель для записей о действиях (например,
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}'
- Создайте представления для обработки 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'})
- Настройте маршруты для ваших представлений, чтобы их можно было вызвать с помощью POST и DELETE запросов.