假设我有以下代码:
文件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的答案,但不是模型的答案。)
答案 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)