我正在用 Django 开发一个项目,我遇到了一个小问题。
我正在尝试制作一个 forms.py,并且我有一个带有"forms.select(("的小部件表单。
我只想知道如果我想指定该小部件的哪些元素应该显示,我该怎么办:
这是我 forms.py 的一部分:
fields = [
...
'id_clasificacion_fk',
...
]
labels = {
...
'id_clasificacion_fk': 'Clasificación del producto',
...
}
widgets = {
...
'id_clasificacion_fk': forms.Select(attrs={'class':'form-control'}),
...
}
如您所见,我有小部件"id_clasification_fk",但它向我显示了"id_clasificacion_fk"中的所有元素。
你只想显示具有"existencia=True"的元素。
这是我的 models.py:
class Articulo(models.Model):
...
existencia=models.BooleanField(default=True)
...
#llaves
id_clasificacion_fk=models.ForeignKey('Clasificacion', null=True, blank=True, on_delete=models.CASCADE, db_column='id_clasificacion_fk')
def __str__(self):
return "("+str(self.id)+") " + self.nombre_producto
同样,我只想展示id_clasificacion_fk中将"existencia"设置为True的元素,以及这些元素。
如果有人能帮我解决这个问题,我将不胜感激。
多谢。
你应该能够使用
queryset=Classification.objects.filter(existencia=True)
它的位置取决于您要指定它的位置以及您是否正在使用模型窗体。 当您定义字段或在窗体的init
函数中或在视图中指定窗体时,您应该能够定义它
例如,在视图中,您将拥有
form = MyForm()
form.fields['id_clasificacion_fk'].queryset=Classification.objects.filter(existencia=True)