Я пытаюсь сравнить извлеченные теги с выбранными или созданными тегами, если тег не существует после публикации запроса - PullRequest
0 голосов
/ 15 мая 2019

У меня есть объект, который содержит некоторые теги, я получил список тегов на выбор, но я хочу создать несколько тегов перед отправкой формы.Я пытаюсь использовать часы Vue, но, кажется, не работает.вот код:

data() {
    return {
      blog: {
        blog_title: "",
        tags: "",
        text: "",
      },
      myTags: {}
    };
  },
watch: {
    blog: {
      deep: true,
      handler: function(tag) {
      let token = localStorage.getItem("TOKEN_STORAGE_KEY");
      for(tag of this.blog.tags) {
        if (this.myTags.includes(tag)) {
          return axios.post(API_URL + "tags/", tag, {headers: { Authorization: `Token ${token}` }})
        }
      }
    }

примечание: я использую комбинированный список vuetify:

<v-combobox label="Tags" :multiple="true" :return-object="false" :items="myTags" item-text="title" chips v-model="blog.tags"></v-combobox>

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

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Я произвел рефакторинг своей модели тегов, я использовал пакет django-category, я заменил его новой моделью, я избавился от кода мусора наблюдения, и он работал отлично.если вы проходите мимо этого вопроса или проблемы, я использовал

class CustomSlugRelatedField(serializers.SlugRelatedField):
    def to_internal_value(self, data):
        try:
            obj, created = self.get_queryset().get_or_create(**{self.slug_field: data})
            return obj
        except (TypeError, ValueError):
            self.fail('invalid')

, как указано в этом ответе

0 голосов
/ 16 мая 2019

1st - handler: function(tag) - tag здесь не тег - это новое значение blog - свойство, которое вы устанавливаете для наблюдения.2-й - for(tag of this.blog.tags) вы используете входящий аргумент для итерации по blog.tags.Вероятно, это не то, что вы хотите.

Итак, полученный код должен работать:


watch: {
    blog: {
      deep: true,
      handler: function(newVal) {
      let token = localStorage.getItem("TOKEN_STORAGE_KEY");
      for(let tag of newVal.tags) {
        if (this.myTags.includes(tag)) {
          return axios.post(API_URL + "tags/", tag, {headers: { Authorization: `Token ${token}` }})
        }
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...