【发布时间】:2019-01-27 06:57:39
【问题描述】:
models.py
from django.db import models
from django.contrib.auth.models import User
CHOICES = (('1','Earned Leave'),('2','Casual Leave'),('3','Sick Leave'),('4','Paid Leave'))
class Leave(models.Model):
name = models.CharField(max_length = 50)
user = models.ForeignKey(User, on_delete = models.CASCADE, null =True)
employee_ID = models.CharField(max_length = 20)
department = models.CharField(max_length = 50)
designation = models.CharField(max_length = 50)
type_of_leave = models.CharField(max_length = 15, choices = CHOICES, default = None)
from_date = models.DateField(help_text = 'mm/dd/yy')
to_date = models.DateField(help_text = 'mm/dd/yy')
reporting_manager = models.CharField(max_length = 50, default = None, help_text = '0001_manager, 0002_manager')
reason = models.CharField(max_length= 180)
accepted = models.BooleanField(('approval status'), default= False)
def __str__(self):
return self.name
我希望用户只在提交表单后访问“type_leave_field”,当他被赋予“是员工”状态时。
forms.py
from django import forms
from lrequests import models
class LeaveRequestForm(forms.ModelForm):
class Meta:
fields = ("name", "employee_ID", "department", "designation", "type_of_leave", "from_date", "to_date", "reporting_manager", "reason")
model = models.Leave
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .forms import LeaveRequestForm
from .models import Leave
def leaveRequest(request):
form_class = LeaveRequestForm
if request.method == "POST":
form = LeaveRequestForm(request.POST)
if form.is_valid():
leave = form.save(commit = False)
leave.user = request.user
form.save()
return HttpResponse("Sucessfully submitted")
else:
form = LeaveRequestForm()
return render(request, "request_form.html", {'form' : form_class})
我尝试过使用 django-guardian 和 django-objectpermissions,但我还没有看到使用它们的确切方法。我什至为它创建了一个用户权限,但由于管理视图和模板不是用户编写的代码,我无法给出定义。
base : 这是一个休假管理系统项目,用户可以在提交表单后编辑他的休假类型,谢谢。
更新-
如何在 html 页面中显示特定字段。
从我的 models.py 中,'accepted' 字段是一个布尔字段,在用户提交表单后,我想在 html 页面中显示该字段的状态,无论是 True 还是 False。我无法从数据库中检索该字段..
【问题讨论】: