«TypeError: объект int не вызывается» при удалении в Django - PullRequest
0 голосов
/ 22 июня 2019

Я в тупике ...

Я получаю «TypeError: объект int не вызывается», когда представление пытается удалить экземпляр. »

Исключение выдается в строке "form.instance.delete ()"

Вот код:

view.py

def decorate_letter(request, ...):    
....
if request.POST:
    flair_formset = flair_formset_factory(request.POST or None)
    for form in flair_formset.forms:
        if form.has_changed():
            if form.is_valid():
                if form.cleaned_data['delete'] == 1:
                    form.instance.delete()
                elif form not in flair_formset.deleted_forms:
                    form.save()

models.py

class LetterFlair(models.Model):
    letter = models.ForeignKey(Letter, on_delete=models.CASCADE)
    flair = models.ForeignKey(Flair, on_delete=models.CASCADE, default=1)
    x = models.DecimalField(decimal_places=2, max_digits=5, null=True, default=0)
    y = models.DecimalField(decimal_places=2, max_digits=5, null=True, default=0)
    r = models.DecimalField(decimal_places=2, max_digits=5, null=True, default=0)
    placed = models.CharField(default='false', max_length=250)
    delete = models.IntegerField(default=0)

forms.py

class LetterFlairModelForm(forms.ModelForm):

    class Meta:
        model = LetterFlair
        fields = ['letter', 'flair', 'x', 'y', 'r', 'placed', 'delete']

трассировка стека

Traceback (most recent call last):
  File ".../python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File ".../python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File ".../python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File ".../python3.6/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File ".../letters/views.py", line 140, in decorate_letter
    form.instance.delete()
TypeError: 'int' object is not callable

Что может быть причиной исключения?

Обновление

Я добавил в свой вопрос трассировку стека.

Я искренне не уверен, какая часть моих кодов приводит к этому вопросу и, следовательно, опубликовал больше, чем обычно.

Обновление 2

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

1 Ответ

1 голос
/ 22 июня 2019

@ AgostBiro указал мне правильное направление, и я точно определил причину проблемы в том, что я назвал одно из полей «удалить», которое переписало метод delete (). Переименование в удаленное и миграция модели устранили проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...