2011-03-01 2 views
5

Рассмотрим упрощенную модель в Django:Django приложение администратора для мастер/подробно странице

class Item(models.Model): 
    title = models.CharField(max_length=200) 
    pub_date = models.DateTimeField() 

class ItemDetail(models.Model): 
    item = models.ForeignKey(Item) 
    name = models.CharField(max_length=200) 
    value = models.CharField(max_length=200) 
    display_order = models.IntegerField() 

Есть ли способ использовать админ редактировать элемент с его детали на той же странице с формой, которая выглядит примерно так :

title: <  > 
pub_date: <  > 
details: 
+-----------------+----------------------+-------------------------+ 
|  name  |  value   |  diplay order  | 
+-----------------+----------------------+-------------------------+ 
|<    >|<     >|<      >| 
|<    >|<     >|<      >| 
|<    >|<     >|<      >| 
|<    >|<     >|<      >| 
|<    >|<     >|<      >| 
+-----------------+----------------------+-------------------------+ 

Где < > будет заполнителем для типов ввода для ввода данных.

Итак, мой вопрос: могу ли я использовать admin для редактирования отношений foreign key с точки зрения родителя? Если нет способа редактировать данные с администратором Django таким образом, было бы неплохо попытаться расширить/настроить admin для этого? Любые указания о том, как это сделать?

Спасибо!

ответ

9

Это на самом деле единственное направление, в котором django хорошо справляется с отношениями - по-другому сложнее (прямое редактирование родственного родителя от ребенка).

Чтобы получить нужный формат, смотрите в ModelAdmin инлайнов:
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin

class ItemDetailInline(admin.TabularInline): 
    model = ItemDetail 

class ItemAdmin(admin.ModelAdmin): 
    inlines = [ 
     ItemDetailInline, 
    ] 
+0

WOW. Довольно круто. Перед публикацией этого вопроса я прочитал много досье администратора DJANGO. Не могу поверить, что я пропустил что-то настолько очевидное. Большое спасибо! –

+0

No prob;) Теперь нам нужен встроенный способ прямого управления следующими внешними ключами! –

Смежные вопросы