regall
Фев. 11, 2011 22:58:19
Вообще лучшее, что могу порекомендовать - сесть и почитать исходники админки, при этом придет самое лучшее понимание - то, что вы не узнаете из документации и книжек.
EvgIq
Фев. 11, 2011 23:13:02
Спасибо. Смотреть исходники всегда полезно :)
Только Ваш ответ для moro не подходит.
Ему надо в модели Pupil просто создать вычисляемое поле school, так по моему.
Если я опять что-то не правильно понял, то не могли бы Вы листинг на основании его примера полностью привести.
(у него там School не связана напрямую с Pupil)
regall
Фев. 11, 2011 23:38:08
class PupilAdmin(admin.ModelAdmin):
list_display = ('Clas', 'FIO', 'school')
def school(self, obj):
return str(obj.Clas.school.number)
EvgIq
Фев. 11, 2011 23:45:05
regall
Спасибо, теперь все ясно.
Но я бы в модель это вынес, ему же надо будет не только в админке это показывать.
ЗЫ хотя я не прав. Задачу он ставил именно такую :)
regall
Фев. 11, 2011 23:50:38
Спорный вопрос, хорошо ли делать денормализацию данных, имея такие ограниченные сведения о задаче. Это уже надо смотреть по задачам приложения. Возможно целесообразнее будет использовать кеш.
EvgIq
Фев. 12, 2011 00:03:35
regallНет, я не денормализацию имел ввиду (ее предлагали уже выше), а:
admin.py
...
class PupilAdmin(admin.ModelAdmin):
list_display = ('Clas', 'FIO','school')
#def school(self, obj):
# return str(obj.Clas.school.number)
...
models.py
...
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
...
moro
Фев. 12, 2011 18:41:00
EvgIq, regall спасибо за ответы.
оба варианта заработали.. выбрал вариант regall'а