在Django模型字段中定义CSS样式

时间:2013-08-03 03:39:28

标签: python css django django-models

假设我有以下代码:

文件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) 
    ...

将CSS类添加到字段my_field的最简单方法是什么? (我在表格中看到了SO的答案,但不是模型的答案。)

1 个答案:

答案 0 :(得分: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,您仍然可以向其传递widgets dict,其中widgets是映射到窗口小部件的模型字段名称字典,或者您可以传递自定义form它,所以你可以做这样的事情

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