django如何隐藏特定表单字段和循环数据输入

时间:2018-04-21 00:41:49

标签: python django django-forms

我是Django新手和学习者,当我看到表单字段不使用<input>标记时,只需按照教程进行操作就会卡住。

这里是我的代码

model.py


    ....

    class Employee(models.Model):
        companyid = models.CharField(max_length=100)
        name = models.CharField(max_length=100)

        def __str__(self):
            return self.name

        def get_absolute_url(self):
            return reverse("system:detail",kwargs={'pk':self.pk})

    ....

这是我的system/templates/system/emp_form.html

    ....

    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" class="btn btn-primary" value="Submit">
    </form>

    ....

和我的view.py


class EmployeeCreateView(CreateView):
    fields = ('nik','name')
    model = models.Employee

    def form_valid(self, form):
        self.object = form.save(commit=False)
        empcount = models.TempEmp.objects.filter(status=0).count()
        self.object.companyid = CID + str(datetime.date().now()) + str(empcount+1)
        self.object.save()
        return super(ModelFormMixin, self).form_valid(form)

问题1。

emp_form.html使用{{ form.as_p }}显示所有表单,我想隐藏特定字段,就像我的情况一样companyid我需要计算机生成。

问题2。

我可以在CID + str(datetime.date().now()) + str(empcount+1)

上使用+ for str

任何有解决方案的可能吗?...

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用ModelForm exclude来隐藏正在呈现的表单

class EmployeeCreateView(CreateView):
    fields = ['nik','name']
    exclude = ['companyid']

答案 1 :(得分:1)

或者,在模型本身中,可以将editable设置为false。这样一来,它就不会以任何形式出现。

class Employee(model.Models):
     companyid = models.IntegerField(editable=False)