Форум сайта python.su
Вообще лучшее, что могу порекомендовать - сесть и почитать исходники админки, при этом придет самое лучшее понимание - то, что вы не узнаете из документации и книжек.
Офлайн
Спасибо. Смотреть исходники всегда полезно :)
Только Ваш ответ для moro не подходит.
Ему надо в модели Pupil просто создать вычисляемое поле school, так по моему.
Если я опять что-то не правильно понял, то не могли бы Вы листинг на основании его примера полностью привести.
(у него там School не связана напрямую с Pupil)
Отредактировано (Фев. 11, 2011 23:25:37)
Офлайн
class PupilAdmin(admin.ModelAdmin):
list_display = ('Clas', 'FIO', 'school')
def school(self, obj):
return str(obj.Clas.school.number)
Офлайн
regall
Спасибо, теперь все ясно.
Но я бы в модель это вынес, ему же надо будет не только в админке это показывать.
ЗЫ хотя я не прав. Задачу он ставил именно такую :)
Отредактировано (Фев. 11, 2011 23:49:33)
Офлайн
Спорный вопрос, хорошо ли делать денормализацию данных, имея такие ограниченные сведения о задаче. Это уже надо смотреть по задачам приложения. Возможно целесообразнее будет использовать кеш.
Офлайн
regall
Нет, я не денормализацию имел ввиду (ее предлагали уже выше), а:
admin.py
...
class PupilAdmin(admin.ModelAdmin):
list_display = ('Clas', 'FIO','school')
#def school(self, obj):
# return str(obj.Clas.school.number)
...
...
class Pupil(models.Model):
Clas = models.ForeignKey(Clas)
FIO = models.CharField(max_length = 60)
def school(self): # сюда т.е. вставить
return str(self.Clas.school.number)
def __unicode__(self):
return self.FIO
...
Офлайн
EvgIq, regall спасибо за ответы.
оба варианта заработали.. выбрал вариант regall'а
Офлайн