我是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
我需要计算机生成。
我可以在CID + str(datetime.date().now()) + str(empcount+1)
任何有解决方案的可能吗?...
谢谢!
答案 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)