Используя Django-taggit с django-rest-framework, я не могу сохранить свои теги

Я пытаюсь понять, почему, когда я отправляю свою форму, мои теги не сохраняются в моей базе данных. Довольно новый с django-rest-framework и Django-taggit тоже, я думаю, чтоя делаю что-то не так :)

Во-первых, перед созданием моего API с помощью rest-framework я использовал общее представление (CreateView и UpdateView) для регистрации / проверки моего события. Это работало нормально, но я решил пойти дальше и попытаться создать API, так как яЯ использую Angularjs сейчас.

Теперь мое модельное событие создано, но без моего тега, и у меня есть некоторые ошибки. Я положил код и яопишу мои ошибки после.

События / models.pyi»

class Event(models.Model):
[...]

    title = models.CharField(max_length=245, blank=False)
    description = models.TextField(max_length=750, null=True, blank=True)
    start = models.DateTimeField()
    end = models.DateTimeField()
    created_at = models.DateTimeField(editable=False)
    updated_at = models.DateTimeField(editable=False)
    slug = AutoSlugField(populate_from='title', unique=True, editable=False)
    expert = models.BooleanField(choices=MODE_EXPERT, default=0)
    home = models.BooleanField(choices=HOME, default=0)
    nb_participant = models.PositiveSmallIntegerField(default=1)
    price = models.PositiveSmallIntegerField(default=0)
    cancelled = models.BooleanField(default=0)

    user = models.ForeignKey(User, editable=False, related_name='author')
    address = models.ForeignKey('Address', editable=False, related_name='events')
    participants = models.ManyToManyField(User, related_name='participants', blank=True, editable=False,
                                      through='Participants')
    theme_category = models.ForeignKey('EventThemeCategory', unique=True, editable=False)

    tags = TaggableManager(blank=True)

    class Meta:
        db_table = 'event'

    def save(self, *args, **kwargs):
        if not self.pk:
            self.created_at = timezone.now()
        self.updated_at = timezone.now()
        super(Event, self).save(*args, **kwargs)
    [...]

м с использованием сериализаторов. HyperlinkedModelSerializer.

апи / serializer.py

from taggit.models import Tag

class TagListSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Tag
        fields = ('url', 'id', 'name')


class EventSerializer(serializers.HyperlinkedModelSerializer):
    address = AddressSerializer()
    user = UserSerializer(required=False)
    tags = TagListSerializer(blank=True)

    class Meta:
        model = Event
        fields = ('url', 'id', 'title', 'description', 'start', 'end', 'created_at', 'updated_at', 'slug', 'expert','home', 'nb_participant', 'price', 'address', 'user', 'theme_category', 'tags')
        depth = 1

апи / просмотров / tags_views.py

from rest_framework import generics
from api.serializers import TagListSerializer
from taggit.models import Tag


class TagsListAPIView(generics.ListCreateAPIView):
    queryset = Tag.objects.all()
    model = Tag
    serializer_class = TagListSerializer


class TagsDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
    queryset = Tag.objects.all()
    model = Tag
    serializer_class = TagListSerializer

апи / просмотров / events_views.py

class EventListAPIView(generics.ListCreateAPIView):
    queryset = Event.objects.all()
    model = Event
    serializer_class = EventSerializer
    paginate_by = 100

    def pre_save(self, obj):
        """
        Set the object's owner, based on the incoming request.
        """
        obj.user = self.request.user
        return super(EventListAPIView, self).pre_save(obj)

апи / urls.py

    url(r'^events/(?P[0-9a-zA-Z_-]+)/

Итак, во-первых, когда я звоню/ Апи / События / имя-моему-событие API прислал мне хороший ресурс с моими тегами. Метод GET работает нормально.

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

На самом деле у меня есть две проблемы с методом POST:

Во-первых, если я отправляю тег, который я уже создал, он отправляет мне сообщение об ошибке, в котором говорится, что тег должен быть уникальным. Я понимаю, что я неЯ не хочу создавать новый, я просто хочу, чтобы он был связан с моим объектом. Я неу меня нет этой проблемы, когда я использую общий вид (этосделано по волшебству :) и все работает нормально)Во-вторых, когда я пытаюсь создать новый тег, мое новое событие сохраняется, но без моих тегов. Вы можете увидеть ответ, полученный angularjs для моего тега ... Он отправил мне имя тега, но без идентификатора, url (гиперссылка). Когда я проверил свою базу данных, тег не был создан.

Я думаю, что я должен сделать собственный get_queryset (self) в моем tags_views, но яЯ не уверен. Я'Я буду продолжать расследование. Если кто-то уже к этому и есть совет, ябудет очень API. Благодарю.

, EventDetailAPIView.as_view(), name='event-detail'),

Итак, во-первых, когда я звоню/ Апи / События / имя-моему-событие API прислал мне хороший ресурс с моими тегами. Метод GET работает нормально.

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

На самом деле у меня есть две проблемы с методом POST:

Во-первых, если я отправляю тег, который я уже создал, он отправляет мне сообщение об ошибке, в котором говорится, что тег должен быть уникальным. Я понимаю, что я неЯ не хочу создавать новый, я просто хочу, чтобы он был связан с моим объектом. Я неу меня нет этой проблемы, когда я использую общий вид (этосделано по волшебству :) и все работает нормально)Во-вторых, когда я пытаюсь создать новый тег, мое новое событие сохраняется, но без моих тегов. Вы можете увидеть ответ, полученный angularjs для моего тега ... Он отправил мне имя тега, но без идентификатора, url (гиперссылка). Когда я проверил свою базу данных, тег не был создан.

Я думаю, что я должен сделать собственный get_queryset (self) в моем tags_views, но яЯ не уверен. Я'Я буду продолжать расследование. Если кто-то уже к этому и есть совет, ябудет очень API. Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос