понедельник, 20 мая 2013 г.

Отображение ForeignKey в админке Django

Есть у нас модель Конкурс:
class Contest(models.Model):
    """
    Конкурс, проводимый ежегодно
    """
    title = models.CharField(max_length=200, verbose_name='Название конкурса')
    year = models.SlugField(unique=True, max_length=4, verbose_name='Год конкурса')
    description = models.TextField(verbose_name='Описание конкурса')

    def __unicode__(self):
        return unicode(self.year + " " + self.title)
        
    class Meta:
        verbose_name = 'Конкурс'
        verbose_name_plural = 'Конкурсы'
Допустим мы хотим использовать ее в модели Призер:
class Prizer(models.Model):

    contest = models.ForeignKey(Contest, verbose_name=u'Конкурс')
    # другие поля...
        
    class Meta:
        verbose_name = 'Призер'
        verbose_name_plural = 'Призеры'
Вот как в админке Django отобразится модель Prizer и поле contest:

Для того, чтобы эти записи в выпадающем списке были отсортированы по-порядку, в классе Contest добавим:
class Contest(models.Model):
    # все то же, что написано выше
        
    class Meta:
        # ...
        #вот эта магическая строчка для сортировки:
        ordering = ('year',)
После этого записи будут отсортированы в используемом поле ForeignKey по-порядку:

Комментариев нет:

Отправить комментарий