这必须在某个地方的Django文档中,但我似乎无法找到它。
说我有以下型号:
models.py
class MyModel(models.Model):
name = models.CharField(max_length=15)
class MyOtherModel(models.Model):
title = models.CharField(max_length=50)
my_model = models.ForeignKey(MyModel)
我创建了一个表单,用于更改Select小部件的背景颜色:
forms.py
class MyOtherModelForm(ModelForm):
my_model=ModelChoiceField(queryset=MyModel.objects.all())
class Meta:
model = MyOtherModel
def __init__(self, *args, **kwargs):
super(MyOtherModelForm, self).__init__(*args, **kwargs)
self.fields['my_model'].widget = Select(attrs={'style':'background_color:#F5F8EC'})
在添加背景颜色代码之前,一切正常。一旦我添加该行,我就会出现一个彩色但未填充的选择小部件。我假设这是因为一旦我指定了小部件行为的某些方面,Django就会寻找要指定的所有内容。
那么如何告诉它使用MyModel中的值来填充Select小部件?
答案 0 :(得分:3)
看看Overriding the default field types or widgets。基于此,我会尝试以下内容。
from django.forms import ModelForm, Select
class MyOtherModelForm(ModelForm):
my_model=ModelChoiceField(queryset=MyModel.objects.all(), widget=Select(attrs={'style':'background_color:#F5F8EC'}))
class Meta:
model = MyOtherModel
同样将self.fields ['my_model']。queryset = MyModel.objects.all()添加到 init 也可能有效。