如何指定Forms.select()必须在Django中显示的元素

时间:2019-04-22 13:00:48

标签: python django forms model

我正在用Django开发一个项目,但是我有一个小问题。

我正在尝试制作一个forms.py,并且我有一个带有'forms.select()'的小部件表单。

我只想知道如果我想指定该小部件的哪些元素应显示:

这是我的form.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”的元素。

这是我的模型。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的元素,以及这些。

如果有人可以帮助我,我会感激不尽。

非常感谢。

1 个答案:

答案 0 :(得分:0)

您应该可以使用

queryset=Classification.objects.filter(existencia=True)

这取决于要在何处指定以及是否使用模型表单。当您定义字段或在表单的init函数中,或者在视图中指定表单时,应该可以定义它。

例如,在视图内您将拥有

form = MyForm()
form.fields['id_clasificacion_fk'].queryset=Classification.objects.filter(existencia=True)