Django admin 内联表单错误

1 投票
2 回答
1079 浏览
提问于 2025-04-15 19:01

我在我的管理网站上有一个内联表单集,并且在admin.py里设置了save_as = True。我的模型大概是这样的:

class Poll(models.Model):
    question = models.CharField(max_length=200, unique = True)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()

我选择了一个独特的问题。问题是,每当我尝试把一个投票保存为新的投票时,如果我忘记更改问题,就会出现错误,这本来是应该的。但是如果我之后更改了问题再尝试保存,就会出现这个错误:invalid literal for int() with base 10: ''。如果我查看错误信息,会发现投票的外键不可用,这就是错误的原因。有没有其他人遇到过这个错误?这是django的bug吗?我知道之前有一个和save_as相关的错误,链接在这里:http://code.djangoproject.com/ticket/9651,但我不确定这是否和我的错误有关。你可以试试django的教程,看看是否也会出现这个错误。谢谢任何回复。

2 个回答

0

我在教程的另一个部分遇到了这个错误。

你检查过你的模板有没有拼写错误吗?我有一个模板本来应该传递 choice_id,结果我却传递了 choice_if,这完全是胡说八道。

1

我在使用“另存为”和处理关系方面从来没有太好运。虽然我觉得我当时在尝试做一些复杂的多对多的事情。

你能告诉我出现错误的页面网址吗?从错误信息来看,网址应该像这样:/admin/myapp/poll//,而实际上应该是像/admin/myapp/poll/103/这样的格式。所以,错误是因为管理员的链接在解析时试图把一个空的主键(PK)转换成整数,以便在数据库中查找。

每当你在管理员的链接中有一个不是整数的ID(而你的主键字段是整数)时,就会出现这个错误。可能是因为没有保存,所以主键是空的,然后管理员试图重定向到那个链接。

这是Django的bug吗?可能是,但我不太相信——现在的Django相对稳定。不过谁也说不准。

撰写回答