Django DeleteView __str__返回了非字符串(类型模型名称)

时间:2019-03-03 16:35:29

标签: python django

我正在尝试实现DeleteView。但是,我收到以下TypeError:

<?xml version="1.0" encoding="utf-8"?>

我该如何解决?

非常感谢大家

代码:

资金模型:

__str__ returned non-string (type Fund) 

views.py:

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

urls.py:

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

funds_detail.html

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

cashflow_confirm_delete.html

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

2 个答案:

答案 0 :(得分:0)

  

__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}" 仅在python 3.6及更高版本中的f-string
  •   

答案 1 :(得分:0)

全部, 设法解决了这一点。实际上,我的模板中存在一个问题。

这是更正的模板:

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

万事如意,感谢大家对我的帮助