2010-02-08 4 views
1

У меня встроенный набор форм на моем сайте администратора. У меня также есть save_as = True в admin.py. Мои модели, например:Django admin inline form error

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() 

Я решил иметь уникальный вопрос. Проблема в том, что всякий раз, когда я пытаюсь сохранить опрос в качестве нового опроса, если я забуду изменить вопрос, я получаю сообщение об ошибке, которое должно произойти. Но если я затем изменил вопрос и попытаюсь сохранить, я получаю эту ошибку: недопустимый литерал для int() с базой 10: '' , и если я проверю ошибку, я вижу, что внешний ключ пула недоступен, и это является причиной Ошибка. У кого-нибудь еще есть эта ошибка? Является ли это ошибкой django? Я знаю, что произошла ошибка, связанная с save_as в http://code.djangoproject.com/ticket/9651, но я не могу сказать, связано ли это с моей ошибкой. Попробуйте учебник django, как и я, и посмотрим, появится ли ошибка. Спасибо за любой ответ.

+0

Можем ли мы увидеть код, который пытается обновить модель, пожалуйста? –

+0

Я только что сделал: класс PollAdmin (admin.ModelAdmin): ... save_as = True и кнопка Сохранить и добавить другую заменяет новый, который сохраняет опрос как новый. – Vitor

ответ

1

У меня никогда не было большой удачи с сохранением как и отношениями. Хотя, я думаю, я пытался сделать много сложного для многих.

Каков url страницы, которая дает эту ошибку ... Из ошибок, похоже, было бы что-то вроде .... /admin/myapp/poll//, тогда как это должно быть что-то большее, как /admin/myapp/poll/103/. Таким образом, ошибка вызвана анализом URL-адресов администратора, пытающимся преобразовать PK из '' в int, чтобы он мог найти его в БД.

Вы получите эту ошибку всякий раз, когда у вас есть URL-адрес администратора, у которого есть идентификатор, который не является int (а ваше поле PK является int). Вероятно, это был None (потому что он не сохранялся), а затем администратор попытался перенаправить его туда.

Ошибка в Django? Может быть, но я в этом сомневаюсь - в наши дни Django довольно стабилен. Но ты никогда не знаешь.

0

У меня была эта ошибка с другой частью учебника.

Вы проверили свои шаблоны для опечаток? У меня был шаблон, который должен был пройти choice_id, и вместо этого я проходил choice_if, который был вздор.