Django Отношение "многие ко многим", не знаю, как его использовать (запрос get и post)

Я пытаюсь использовать свою модель с M2M отношениями и пытаюсь получить все значения из GET запроса. Также я использую API под названием random quotes, который можно найти здесь: https://rapidapi.com/martin.svoboda/api/quotes15/

Вот мой models.py:

from django.db import models

class Tag(models.Model):
   tag = models.CharField(max_length=50)
   def __str__(self):
       return  str(self.id)+". "+str(self.tag)

class Quote(models.Model):
   frase = models.TextField()
   autor = models.CharField(max_length=150)
   tags = models.ManyToManyField(Tag)

   def __str__(self):
       return  str(self.id)+". "+str(self.autor)


А вот мой views.py, где я использую функции API GET и POST:

from django.shortcuts import render, redirect
import requests
from .models import Quote
from .models import Tag
from rest_framework.decorators import api_view
from rest_framework.response import Response
from django.http import Http404
from .serializers import QuoteSerializer, TagSerializer

@api_view(['GET', 'POST'])
def api_quotes(request):
    if request.method == 'POST':
        new_quote_data = request.data
        quote = Quote()
        quote.id = new_quote_data['id']
        quote.frase = new_quote_data['frase']
        quote.autor = new_quote_data['autor']
        quote.tag = new_quote_data['tags']

        quote.save()

    url = "https://quotes15.p.rapidapi.com/quotes/random/"

    querystring = {"language_code":"pt"}

    headers = {
        'x-rapidapi-host': "quotes15.p.rapidapi.com",
        'x-rapidapi-key': "4a3bce6d8cmsh044349ed231bf95p15f17ajsn846aa4e94d98"
    }

    r = requests.get(url , querystring, headers=headers)
    quote_json = r.json()

    print(quote_json)
    id = quote_json['id']
    print(id)
    frase = quote_json['content']
    autor = quote_json['originator']['name']
    tags = quote_json['tags'] #LISTA de tags, os números não aparecem
    
    print(tags)

    new_quote = Quote()
    new_tag = Tag()

    new_quote.id = id
    new_quote.frase = frase
    new_quote.autor = autor
    new_tag.tag = tags

    # obj = Pessoa.objects.get(pk=1) # get the object
    # obj.ccir_set.all()

    # new_quote.tags.set(new_tag.tag)
    # print("OLHA AÍ: ", new_quote.tags.set(tags))
    print("OLHA Aì: ", new_quote.set(tags))

    # tags = TagSerializer(new_tag)
    # new_quote.tags = tags.set()

    quotes = Quote.objects.all()
    serialized_quote = QuoteSerializer(new_quote)
    # serialized_tag = TagSerializer(new_tag)
    return Response(serialized_quote.data)

def index(request):
    if request.method == 'POST':
        frase = request.POST.get('frase')
        autor = request.POST.get('autor')
        # tagNome = request.POST.get('tags')

        # request.add(tagNome)
        quote = Quote(frase = frase, autor = autor)
        quote.save()
        return redirect('index')
    else:
        all_quotes = Quote.objects.all()
        all_tags = Tag.objects.all()
        print(all_quotes)
        return render(request, 'quotes/index.html', {'quotes': all_quotes, 'tags': all_tags})

Если нужно, вот файл serializers.py:

from rest_framework import serializers
from .models import Quote, Tag

class TagSerializer(serializers.ModelSerializer):
    class Meta:
        model = Tag

class QuoteSerializer(serializers.ModelSerializer):
    tags = TagSerializer(read_only = True, many=True)
    class Meta:
        model = Quote
        fields = ['id', 'frase', 'autor', 'tags']

Наконец, я также хотел бы знать, следует ли и где использовать .set() или любую другую команду.

Вернуться на верх