我正在尝试实现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>
答案 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>
万事如意,感谢大家对我的帮助