Администратор Django аварийно завершает работу после перенаправления «Сохранить и продолжить» на «Нет» вместо идентификатора первичного ключа. Помогите? - PullRequest
0 голосов
/ 05 августа 2009

Вчера я впервые установил Django и попробовал его всерьез сегодня. Я только планирую использовать его для красивого интерфейса администратора, Zend Framework для всего остального.

Я импортировал существующую таблицу event в администратор. Там нет необходимости присоединяться. Но первичный ключ - это не id, он называется «событие» (в соответствии с этим соглашением об именах ). Я, очевидно, не хочу, чтобы 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 ]

5 голосов
/ 06 августа 2009

Возможно, вы хотите, чтобы PK был AutoField вместо IntegerField, поэтому Django автоматически заполнит его для вас. В противном случае у вас есть , чтобы сделать это самостоятельно в методе сохранения или интерфейсе администратора:

class Event(models.Model):
    event = models.AutoField(primary_key=True)
2 голосов
/ 06 августа 2009

Это не исправление, но, надеюсь, оно поможет пролить свет на эту ситуацию.

За кулисами, когда вы нажимаете «Сохранить и продолжить», происходит 2 URL-адреса, к которым осуществляется доступ ...

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

Если вы посмотрите на полученную ошибку, URL, который «захлебывается» - это / admin / events / event / None /. Обратите внимание, как там, где должен быть идентификатор, есть значение «Нет»? Это означает, что когда создается новая запись, она, вероятно, не имеет значения, установленного для «события» (ПК).

Если бы вы проверили свою базу данных SQL, вы, вероятно, увидели бы, что столбец события был пустым.

Стив Лош только что опубликовал код (как я печатал) о том, как решить эту проблему, поэтому я закончу свой ответ здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...