Сайт администратора Django: как включить условные поля? - PullRequest
0 голосов
/ 11 октября 2010

Интересно, возможно ли добавить некоторые условные поля в django?Скажем, у меня есть модель категории, которая имеет поля идентификатора, имени и описания.Я хотел бы добавить поле «многие ко многим» в моей модели Продукта, которое связывает его с моделью «Код категории» ... и в качестве справочного пособия показать, каким будет название этой категории.Я знаю, что могу просто связать его с названием категории, но мой реальный сценарий немного сложнее, и мне действительно нужно отобразить второе поле, основанное на выборе в другом!

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 11 октября 2010

В дополнение к ответу Даниэля: если вы просто хотите настроить представление объектов в ModelChoiceField (а не изменять его в целом, как если бы вы использовали метод __unicode__): у класса поля есть метод label_from_instance, который возвращает по умолчанию значение объекта в юникоде, но вы можете переопределить его, как вам нравится:

class CategoryChoiceField(forms.ModelChoiceField):

     def label_from_instance(self, obj):
         return "%s %s" % obj.pk, obj.name
0 голосов
/ 11 октября 2010

Это не условное поле.Если я вас правильно понимаю, все, что вам действительно нужно, это настроить отображение соответствующего элемента, чтобы оно отображало поле name, а не необработанный идентификатор.К счастью, это то, что Django будет делать по умолчанию, если вы определите метод __unicode__ в модели категории, который возвращает значение, которое вы хотите отобразить вместо идентификатора.

...