首页 文章

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

提问于
浏览
1

我是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 .

我可以用于str on CID + str(datetime.date().now()) + str(empcount+1)

有没有解决方案?...

谢谢!

2 回答

  • 1

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

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

    或者,在模型本身中,您可以将editable设置为false . 这使得它不会以任何形式出现 .

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

相关问题