首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在内联删除后读取__str__()的Django管理界面

在内联删除后读取__str__()的Django管理界面
EN

Stack Overflow用户
提问于 2014-12-30 00:54:10
回答 1查看 247关注 0票数 0

上下文:

我刚从Django开始。为了熟悉它,我正在编写一个网络应用程序来跟踪家庭账单。每一张钞票都有与欠钱的每个人相关的账单部分。欠款额按账单总额除以部分总数(即所涉人数)计算。见下文:

代码语言:javascript
代码运行次数:0
运行
复制
class Bill(models.Model):
  description = models.CharField(max_length=100)
  amount = models.DecimalField(max_digits=9, decimal_places=2)
  paid_by = models.ForeignKey(Person)

  def __str__(self):
    return self.description

class BillPortion(models.Model):
  bill = models.ForeignKey(Bill, related_name='portions')
  person = models.ForeignKey(Person, related_name='bill_portions')

  @property
  def amount(self):
    return self.bill.amount / self.bill.portions.count()

  def __str__(self):
    return str(self.person) + ' owes ' + str(self.bill.paid_by) + \
           ' $' + str(self.amount) + ' for ' + str(self.bill)

发行:

我的应用程序的管理界面也包含了使用BillPortion内联使用admin.StackedInline的相关的admin.StackedInline对象。当我删除连接到特定票据的最后一个BillPortion时,在BillPortion的amount()属性中会出现一个DivisonByZero错误。该属性正在由BillPortion的__str__()方法读取。

看起来,在从数据库中删除BillPortion对象之后,它将尝试读取该部分的__str__方法。但是,因为它不再存在于数据库中,所以str(self.amount)会导致DivisionByZero错误。

为什么管理界面要尝试读取我刚刚删除的对象的__str__()方法?我是否应该用amount()方法进行边缘处理?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-30 01:26:17

为什么管理界面要尝试读取我刚刚删除的对象的str()方法?我是否应该用数值()方法来加边?

我的请求是因为它使用该属性来显示信息(消息包)。

您可以尝试重写__str__,然后检查self.amount是否存在/返回正确,如果不正确,则返回空字符串或其他可读的消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27698202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档