2016-06-28 5 views
0

管理ページで新しいオブジェクトの追加ページの表示方法を変更したいと思います。 私はフィールドを変更するのではなく、入力を整理したいと思います。例えば、ファットラインに2つのフィールド、次にいくつかの段落、次に2つのフィールドを配置します。 私は約add_form_templateを読んで、これは私がフォームを定義せずにテンプレートを変更できるようになっているということです。 フィールドを表示しない私の試みはここにあります: 私はフォームを定義し、それをどのように渡す必要があるかどうかを知っていますか? フォームに渡す必要がある場合、add_form_templateは何のために使用されますか?django - 管理テンプレートを上書きする方法

from settings import BASE_DIR 
import os 

@admin.register(Owner) 
class OwnerAdmin(admin.ModelAdmin): 
    add_form_template = os.path.join(BASE_DIR, 'dealer/templates/add_owner.html') 
    list_display = ('name', 'country', 'city', 'car') 


@admin.register(Car) 
class CarAdmin(admin.ModelAdmin): 
    list_display = ('name',) 

//----- add_owner.html 
{% extends "admin/base.html" %} 

{% block content %} 
    <h1>New Owner</h1> 
    <form method="POST" class="post-form">{% csrf_token %} 
     {{ form.as_p }} 
     <button type="submit" class="save btn btn-default">Create</button> 
    </form> 
{% endblock %} 
+0

あなたの 'add_form_template'について - テンプレートの絶対パスを使用しないでください。ですから、テンプレートを 'dealer/templates/dealer/add_owner_form.html'にファイルとして置いて、' add_form_template'として 'dealer/add_owner_form.html'を使うべきです。 – ohrstrom

答えて

1

フィールドのレイアウトをカスタマイズするために管理テンプレートを変更する必要はありません。代わりにfieldsetsを使用してください:

# admin.py 
@admin.register(Owner) 
class OwnerAdmin(admin.ModelAdmin): 
    # ... 
    fieldsets = (
     (None, { 
      'fields': (
       ('name', 'country'), 
       'city' 
       ) 
     }), 
     ('Another Fieldset', { 
      'description': 'Some information to display...', 
      'fields': (
       'car', 
      ), 
     }), 
    ) 
+0

これはとても便利です。私はそれをカスタマイズして、特定のフォントや色などの複雑なフォームのように見えるようにする方法を知っていますが、自分のテンプレートを使用する必要があります。 – max

+0

また、これはそれらを水平にせず、垂直方向にグループ化するだけです。 – max

+0

追加の管理ライブラリ/スキン/ etcを使用していますか?デフォルトのDjangoインストールでは、 'name'と' country'は水平に整列して表示されます。 – ohrstrom

関連する問題