在Save and Continue重定向到None而不是主键的id之后,Django管理员崩溃。救命?

时间:2009-08-05 19:55:04

标签: mysql django

我昨天第一次安装了Django并且今天认真地试了一下。我只打算将它用于漂亮的管理界面,其余的是Zend Framework。

我将现有的表格event导入了管理员。没有需要加入。但主键不是'id',它被称为“事件”(在this naming convention之后)。我显然不希望此列的id#出现在数据输入表单中。

一切正常,除了添加新事件时,我点击保存并继续编辑,它会添加事件,但会将URL重定向到 http://127.0.0.1:8000/admin/events/event/None/ 并吐出此错误

ValueError at /admin/events/event/None/

invalid literal for int() with base 10: 'None'

这是我的models.py:

from django.db import models

class Event(models.Model):
    event = models.IntegerField(primary_key=True)
    title = models.CharField(max_length=150)
    address_1 = models.CharField(max_length=150)
    url = models.URLField(max_length=500,verify_exists=False)
    start_date = models.DateField()
    end_date = models.DateField()
    ACTIVE_CHOICES = (
        (0, 'InActive'),
        (1, 'Active'),
    )
    active = models.CharField(max_length=1, default=1, choices=ACTIVE_CHOICES)
    def __unicode__(self):
        return self.title
    class Meta:
        db_table = u'event'

任何想法我做错了什么或如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

您可能希望PK为AutoField而不是IntegerField,因此Django会自动为您填写。否则你 在save方法或管理界面中自己做

class Event(models.Model):
    event = models.AutoField(primary_key=True)

答案 1 :(得分:2)

这不是一个解决办法,但希望它可以帮助解决这种情况。

当您点击“保存并继续”时,在幕后发生的事情是有2个URL被访问...

/admin/events/event/add/
/admin/events/event/{id of newly created element}/

如果你看一下你得到的错误,那就是'窒息的'是'/ admin / events / event / None /'。注意id应该在哪里有'None'的值?这意味着当创建新记录时,它可能没有为'event'设置值(pk)。

如果您要检查SQL数据库,您可能会看到事件列为空。

Steve Losh刚刚发布了关于如何解决这个问题的代码(正如我输入的那样)所以我将在这里结束我的答案。