1

これは、私がDjangoの管理フォームを修正について尋ねた質問へのフォローアップですその情報を入力します。私が抱えている問題は、自分のフィールド名が長すぎて、値を入力する編集ボックスが重複してしまうことです。は、Djangoのfieldset.htmlでグリッドを調整する方法

Djangoのウェブサイトのチュートリアルに従うと、「質問:」というラベルが質問を入力するはずの編集ボックスと重なり合っているかのようになります。

関連するコードは/admin/includes/fieldset.htmlにあるようです。私はまで編集した:私は行う方法を見つけ出すことはできませんどのような

<fieldset class="module aligned {{ fieldset.classes }}"> 
    {% if fieldset.name %}<h2>{{ fieldset.name }} - Foo Test</h2>{% endif %} 
    {% for line in fieldset %} 
     <div class="form-row{% for field in line %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}"> 
       {% for field in line %} 
       <div> 
        {{ field.label_tag }}{{ field.field }} 
       </div> 
       {% endfor %} 
     </div> 
    {% endfor %} 
</fieldset> 

は{{}} field.label_tagに多くの部屋を与えるためにそれを強制することです移動し、{{field.field}}右に

<div class="form-row field-numInvestments">    
    <div> 
    <label for="id_numInvestments" class="required">NumInvestments:</label><input id="id_numInvestments" type="text" class="vIntegerField" value="8000" name="numInvestments" /> 
    </div> 
</div> 

任意のコメントをいただければ幸いです、

おかげ

+0

確かに、幅を定義するのはHTMLではなく、CSSです。 –

答えて

1

私はあなたを信じている:それはすべて有用である場合

は、ここで生成された関連(私は信じている)htmlですコードからはできません。あなたのラベルにいくつかのCSSを追加するだけです。そのようなことは、トリックを行うだろう:

fieldset .form-row label { 
    width: <YourWidthHere>px; 
} 

はそれがお役に立てば幸いです。

+0

さて、これはおそらく私が何であるのかを明らかにするでしょうが、どのファイルをこの場所に置くべきですか?私は、Djangoのファイルを読み込んでいます。私は.form-rowのためにいくつかのgreppingを試してみることができます。私は何ができるのかを見ていきますが、私は正しいファイルが欠けていると感じています。とにかく、提案のおかげで。うまくいけば、私はそれをどこに置くか把握することができるでしょう。 (または、あなたが知っていれば、ここに投稿すること自由に感じてください - 私はそれを見つけることはできません.... thx again ...) – user1245262

+0

私はあなたのカスタムfieldset.htmlの上に新しいCSSファイルを作成し、 。私は余分なヘッダー要素などを含むためのブロックがあると思う。 – joshcartme

2

HTMLを編集する必要はありません。 fieldset.htmlやその他の管理用テンプレートを上書きする必要はありません。

やりたいことです:

  • あなたはCSSセレクタを使用してラベルを選択できることを確認します。
  • CSSスタイルシートを追加します。

次のCSSを使用して、ラベルを選択することができます。

/* attribute selector selecting only the label with for="id_numInvestments" */  
label[for="id_numInvestments"] { width: 300px; } 

または

/* Applies to all labels in fieldset with class='field-numInvestments' */ 
.field-numInvestments label { width: 300px; } 

は/私にあなたの静的なディレクトリのどこか(/パスを/新しいCSSファイルを作成します。 CSS)。 このスタイルシートの内容は上記のcssセレクタの1つである必要があります。

管理のヘッダに、このスタイルシートを含めるには、「追加」と「変更」ページでは、あなたのModelAdminの「にクラスメディア」を追加:

admin.py

class MyModelAdmin(admin.ModelAdmin): 
    ... 
    class Media: 
     css = { 
      'all': ('/path/to/my.css',) 
     } 
admin.site.register(MyModel, MyModelAdmin) 

注:「すべての'はすべてのメディアタイプに対応しています。 「スクリーン」、「プリント」、「投影」などを使用することもできます。

完了!

代わりに、Djangoはadmin.pyを介してフィールドセットにcssクラスを追加する方法を提供します。

デフォルトの管理用スタイルシートには、「ワイド」および「extrapretty」CSSクラスが含まれています。彼らはあなたの管理者に「追加」と「変更」のページに幅広く控えめな外観を与えます。この外観はより広いラベルを持っています!あなたが運が良ければ、これらは十分で、カスタムスタイルシートを追加する必要はありません! :)

フィールドセットのCSSクラスを設定するには、ModelAdminでフィールドセットを定義する必要があります。

admin.py:

class MyModelAdmin(admin.ModelAdmin): 
    ... 
    fieldsets = (
     (None, { 
      'classes': ('wide', 'extrapretty'), 
      'fields': ('numInvestments', '...') # And all other fields. 
     }), 

admin.site.register(MyModel, MyModelAdmin) 

'ワイド'、 'extraprettyは' 十分でない場合には、 'フィールドセット' は、あなたのフィールドセットにカスタムCSSクラス( 'extra_wide')を追加するために使用。

admin.py:

class MyModelAdmin(admin.ModelAdmin): 
     ... 
     fieldsets = (
      (None, { 
       'classes': ('extra_wide',), 
       'fields': ('numInvestments', 'other_field_with_wide_label') 
      }), 

      (None, { 
       'fields': ('other_field', '...') # All other fields. 
      }), 
     ) 
     class Media: 
      css = { 
       'all': ('/path/to/my.css',) 
      } 

    admin.site.register(MyModel, MyModelAdmin) 

my.css:

.extra_wide label { width: 300px; } 

fieldsetのことの利点は、あなたがDjangoのデフォルトのCSSを使用するか、または一度だけのスタイルシートを作成することができるということです。残りはadmin.py形式で制御されます。したがって、これはワイドラベルが複数回出現する場合に適しています。

さらに別の方法:問題を回避するだけです。あなたのラベルを短くしてくださいとあなたのフィールドがあるものについて説明する 'help_textに' を使用

1):

models.py:

numInvestments = models.IntegerField('Your total number of investments') 

は次のようになります。

numInvestments = models.IntegerField('Investments', 
    help_text="Your total number of investments.") 

2)ラベルを短くしてフィールドセットを使用してフィールドの上にタイトルを付け、このフィールドの内容を説明するタイトル:

models.py:

numInvestments = models.IntegerField('Number') 

はadmin.py:私は本当に長いラベルを必要とし、それが独特の例外であれば

class MyModelAdmin(admin.ModelAdmin): 
     ... 
     fieldsets = (
      ('Investments', { 
       'fields': ('numInvestments',) 
      }), 
     ) 
    admin.site.register(MyModel, MyModelAdmin) 

私はセレクタatrribute CSSを使用します。しかし、より長いラベルがある場合は、フィールドセットを 'wide'と 'extrapretty'またはカスタムクラス( 'extra_wide')で使用する必要があります。しかし、ほとんどの場合、短いラベル、help_text、およびフィールドセット内のフィールドをタイトルでグループ化することで、この問題を回避しようとします。

これはあなたの質問に答えましたか?私はそれが助けて欲しい

関連する問題