基于模型选择的模板中的动态更改元素类

时间:2014-11-19 21:49:57

标签: css django class model

我想根据我的模型动态更改模板中的元素类。

这是我的模特:

class StockFlow(models.Model):

    TYPE_CHOICES = (
        (None, _('- Selecione -')),
        ('Entrada', (
                (1, _('Pedido')),
                (2, _('Pegou emprestado')),
                (3, _('Entrada simples')),
            )
        ),
        ('Saida', (
                (4, _('Venda')),
                (5, _('Emprestado')),
                (6, _('Saida simples')),
                (7, _('Avaria ou perda')),
                (8, _('Presente')),
            )
        ),
    )

    stock = models.ForeignKey('Stock')
    value = models.IntegerField(null=True)
    quantity = models.IntegerField(null=True)
    date = models.DateField()
    type = models.IntegerField(max_length=1, choices=TYPE_CHOICES, default=-1)
    description = models.TextField(null=True)

我想改变这个类,如果是" Entrada"或者"赛达"。如何设置这个条件语句来设置我的css类?

1 个答案:

答案 0 :(得分:0)

您应该使用Django表单和模板上下文的组合来完成此功能......

从StockFlow类创建一个ModelForm。

from django.forms import ModelForm

class StockFlowForm(ModelForm):
    class Meta:
        model = StockFlow

    def __init__(self, *args, **kwargs):
        super(StockFlowForm, self).__init__(*args, **kwargs)
        self.fields['type'].widget.attrs['class'] = 'Entrada' if self.instance.type in [1,2,3] else 'Saida'

现在,当您在模板中渲染此ModelForm时,类型字段将动态类设置为“Entrada”。或者'赛达'取决于类型的值。