1
这必须在Django文档的某处,但我似乎无法找到它。如何在Django中初始化ForeignKey ModelChoiceField?
说我有以下型号:
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)
我创造,我改变选择构件的背景颜色的表格:
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小部件?
感谢您的领导。如果我理解正确,这表明我需要在窗体中显式创建一个ModelChoiceField。我编辑我的代码(和这个问题)来做到这一点,但选择小部件仍然是空的。 – Sinidex 2011-04-24 01:31:12
我的想法是,不是重写__init__方法,而是使用小部件= {}将所需的样式添加到您的选择中。我在想,这可能会解决您的问题与空选择部件。 – solartic 2011-04-24 01:40:37
看了一下这个文档,并试图在Meta下声明widget的颜色。当我这样做时,我会得到一个无色的,填充的下拉列表。如果我将颜色规范留在上述问题中,我会看到一个彩色的,无人填充的下拉列表。 – Sinidex 2011-04-24 01:42:10