1

假设我有以下代码:

文件模型.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 上看到了一些关于表单的答案,但没有看到模型的答案)。

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,您仍然可以将widgets字典传递给它,widgets映射到小部件的模型字段名称字典在哪里,或者您可以将自定义传递form给它,因此您可以执行类似这样的操作

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