【问题标题】:How to specify the elements that the forms.select() must show in django如何指定 forms.select() 必须在 django 中显示的元素
【发布时间】:2019-04-22 13:00:47
【问题描述】:

我正在用 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 的元素,以及这些。

如果有人可以帮助我,我将不胜感激。

非常感谢。

【问题讨论】:

    标签: python django forms model


    【解决方案1】:

    你应该可以使用

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

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

    例如,在您将拥有的视图中

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

    【讨论】:

    • 谢谢你的回复,你能给我举个例子吗?我在视图中使用了“Classification.objects.filter(existencia=True)”。我想在表单内做,因为我在模板内使用表单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 2013-06-20
    • 2016-06-09
    • 1970-01-01
    相关资源
    最近更新 更多