Django недопустимый литерал для int () с save_m2m - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь интегрировать vue теги input http://www.vue-tags-input.com/# / с моим проектом.

Автозаполнение работает нормально, форма тоже. Когда я сохраняю форму, все, кроме категории (тегов), сохраняется.

Я знаю, что с отношениями многие ко многим я должен использовать save_m2m в поле зрения, но когда я это делаю, появляется ошибка:

      invalid literal for int() with base 10: 'e'

Мое представление:

@login_required
def save_embed(request):
interests = RecipeCategory.objects.all()

if request.method == "POST":
    form = AddEmbed(request.POST)
    if form.is_valid():
        new_embed = form.save(commit=False)
        new_embed.added_by = request.user
        new_embed.save()
        form.save_m2m()
else:
    form = AddEmbed()

return render(request, 'embed/embedadd.html', {'form': form,
                                              'interests': interests})

Модель:

class Embed(models.Model, Activity):
url = models.URLField(max_length=255, verbose_name='Adres przepisu')
title = models.CharField(max_length=255, verbose_name='Tytuł')
description = models.TextField(verbose_name='Opis', blank=True, null=True)
type = models.CharField(blank=True, max_length=200)
thumbnail_url = models.URLField(max_length=255, blank=True, null=True)
image = models.ImageField(upload_to='recipes', blank=True)
html = models.TextField()
votes = GenericRelation(LikeDislike, related_query_name='embedlikes')
added_by = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
category = TreeManyToManyField(RecipeCategory, blank=True, null=True, related_name='embeds', verbose_name='Kategoria')
slug = AutoSlugField(populate_from='title', unique=True)

Редактировать - Форма

class AddEmbed(ModelForm):

    url = forms.URLField(label='Adres przepisu', widget=forms.URLInput(attrs={'v-model': 'embed.url', '@paste':'paste', '@input':'input'}))
    title = forms.CharField(widget=forms.HiddenInput(attrs={':value':'embedsinfo.title'}))
    description = forms.CharField(widget=forms.HiddenInput(attrs={':value':'embedsinfo.description'}))
    thumbnail_url = forms.CharField(widget=forms.HiddenInput(attrs={':value':'embedsinfo.thumbnail_url'}))
    html = forms.CharField(widget=forms.HiddenInput(attrs={':value':'embedsinfo.html'}))
    category = forms.CharField(widget=forms.HiddenInput(attrs={':value': 'tags'}))

    class Meta:
        model = Embed
        fields = ['url','title', 'description', 'thumbnail_url', 'html', 'category']

Прослеживание:

    Traceback (most recent call last):
  File "/data/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/data/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/data/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/data/lib/python3.6/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/app/recipes/views.py", line 39, in save_embed
    form.save_m2m()
  File "/data/lib/python3.6/site-packages/django/forms/models.py", line 441, in _save_m2m
    f.save_form_data(self.instance, cleaned_data[f.name])
  File "/data/lib/python3.6/site-packages/django/db/models/fields/related.py", line 1621, in save_form_data
    getattr(instance, self.attname).set(data)
  File "/data/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py", line 997, in set
    self.add(*new_objs, through_defaults=through_defaults)
  File "/data/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py", line 938, in add
    through_defaults=through_defaults,
  File "/data/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py", line 1065, in _add_items
    '%s__in' % target_field_name: new_ids,
  File "/data/lib/python3.6/site-packages/django/db/models/query.py", line 892, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/data/lib/python3.6/site-packages/django/db/models/query.py", line 910, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/data/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1290, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/data/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1318, in _add_q
    split_subq=split_subq, simple_col=simple_col,
  File "/data/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1251, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "/data/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1116, in build_lookup
    lookup = lookup_class(lhs, rhs)
  File "/data/lib/python3.6/site-packages/django/db/models/lookups.py", line 20, in __init__
    self.rhs = self.get_prep_lookup()
  File "/data/lib/python3.6/site-packages/django/db/models/fields/related_lookups.py", line 59, in get_prep_lookup
    self.rhs = [target_field.get_prep_value(v) for v in self.rhs]
  File "/data/lib/python3.6/site-packages/django/db/models/fields/related_lookups.py", line 59, in <listcomp>
    self.rhs = [target_field.get_prep_value(v) for v in self.rhs]
  File "/data/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 972, in get_prep_value
    return int(value)
ValueError: invalid literal for int() with base 10: 'e'
[21/Jun/2020 13:20:22] "POST /recipes/recipe/embed/add/ HTTP/1.1" 500 151931
...