Django DeleteView __str__ вернул не-строку (введите имя модели) - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь реализовать DeleteView.Однако я получаю следующую ошибку TypeError:

__str__ returned non-string (type Fund) 

Как я могу решить эту проблему?

большое спасибо всем заранее,

Код:

Модель фонда:

class Fund(models.Model):
 name = models.CharField(max_length=100)
 slug = models.CharField(max_length=100, default = 'default')
 amount = models.DecimalField(max_digits=20, decimal_places=0)

 def __str__ (self):
    return self.name

views.py:

class CashFlowDelete(DeleteView):
 model = CashFlow
 success_url = reverse_lazy('fds:fds')

urls.py:

path('deletecashflow/<int:pk>/', views.CashFlowDelete.as_view(),name = "delete_cashflow"),

funds_detail.html

<a href="{% url 'fds:delete_cashflow' pk=cashflow.pk %}">Delete</a>

cashflow_confirm_delete.html

<form method="post">
 {% csrf_token %}
 <p>Are you sure you want to delete "{{ object }}"?</p>
 <input type="submit" value="Confirm">
</form>

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Все, удалось решить вопрос.На самом деле в моем шаблоне была проблема.

Это исправленный шаблон:

<form method="post">
 {% csrf_token %}
 <p>Are you sure you want to delete "{{ form }}"?</p>
 <input type="submit" value="Confirm">
</form>

всего наилучшего, и спасибо всем за помощь мне

0 голосов
/ 03 марта 2019

__str__ должен вернуть строку, а ваш __str__ будет возвращен, кроме строки.

Например, здесь цена преобразуется в строку с использованием f'strings

class Product(models.Model):
    name = models.CharField(max_length=128)
    price = models.FloatField()

    def __str__(self):
        return f'{self.price}'

Вы можете отформатировать строку различными способами.Проверьте версию Python при преобразовании в строку

  • str(self.price)
  • "{}".format(self.price)
  • "%s" % (self.price)
  • f"{self.price}" fтолько в Python 3.6+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...