KeyError при попытке сохранить экземпляр модели. Джанго - PullRequest
0 голосов
/ 26 августа 2010

KeyError при попытке сохранить экземпляр модели. Он должен реагировать на сигнал post_save, чем сохранять экземпляр ...

Код:

from django.db.models.signals import post_save

class PlaylistEntry(models.Model):
    playlist=models.ForeignKey(Playlist)
    media=models.ForeignKey(Media)
    order=models.PositiveIntegerField(default=9000000, editable=False)
    added=models.DateTimeField(default=datetime.datetime.now(),editable=False )

def playlist_entry_changed(sender, instance, **kwargs):
        entrys=PlaylistEntry.objects.filter(playlist=instance.playlist).order_by('order')
        entrys[0].save()

post_save.connect(playlist_entry_changed, PlaylistEntry)

Ошибка:

Exception Type: KeyError at /admin/playlist/playlistentry/add/
Exception Value: 38539456

Ответы [ 2 ]

1 голос
/ 26 августа 2010

Из ваших комментариев вы пытаетесь обновить порядок. Вместо того, чтобы использовать сигнал, переопределите метод сохранения.

def save(self, *args, **kwargs):
    # Only do this if it's the first time we're saving.
    if not self.id:
        entries = PlaylistEntry.objects.order_by('-order')
        try:
            self.order = entries[0].order + 1
        except IndexError:
            # we don't have any PlaylistEntries yet, so we just start @ 0
            self.order = 0

    super(PlaylistEntry, self).save(*args, **kwargs) 

Кроме того, почему ваш заказ по умолчанию равен 9 миллионам ... не следует ли начинать с 0?

0 голосов
/ 27 августа 2010

Для осуществления заказа вы также можете посмотреть этот фрагмент !

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