1

次のコードがあるとします。

ファイル models.py:

from django.db import models
from django.contrib.auth.models import User

class MyClass(models.Model):
   username = models.ForeignKey(User, blank=True, null=True)
   my_field = models.CharField(max_length=200, default="sample_field")

File views.py

from django.forms.models import inlineformset_factory
from django.contrib.auth.models import User
from myapp.models import MyClass

@login_required
def index(request):

    username = User.objects.get(username=request.user.username)

    MyClassFormSet = inlineformset_factory(User, MyClass, can_delete=False, extra=5)

    formset = MyClassFormSet(instance=username) 
    ...

ここでフィールド my_field に CSS クラスを追加する最も簡単な方法は何ですか? (フォームの SO に関するいくつかの回答を見ましたが、モデルの回答は見ませんでした)。

4

1 に答える 1

2

モデルからフォームを作成し、そこに UI 属性を定義します。これは、それを行う正しい場所です。

class MyForm(ModelForm):
    class Meta:
        model = MyClass
        fields = ('my_field')
        widgets = {
            'my_field': TextInput(attrs={'class': 'mycssclass'}),
        }

それはあなたのフィールドに正しいクラスを設定する必要があります.HTMLファイルで必要なcss属性を設定します.

.mycssclass {
    color: red;
}

使用している場合inlineformset_factoryでも、ウィジェットにマップされたモデル フィールド名の辞書であるwidgetsdict を渡すことができます。または、それにカスタムを渡すことができるので、次のようなことができます。widgetsform

MyClassFormSet = inlineformset_factory(User, MyClass, form=MyForm, can_delete=False, extra=5)
于 2013-08-03T03:56:05.797 に答える