models.py
from django.db import models
from django.contrib.auth.models import User
CHOICES = (('Earned Leave','Earned Leave'),('Casual Leave','Casual Leave'),('Sick Leave','Sick Leave'),('Paid Leave','Paid Leave'))
class Leave(models.Model):
employee_ID = models.CharField(max_length = 20)
name = models.CharField(max_length = 50)
user = models.ForeignKey(User, on_delete = models.CASCADE, null =True)
type_of_leave = models.CharField(max_length = 15, choices = CHOICES)
from_date = models.DateField()
to_date = models.DateField()
)
def __str__(self):
return self.nameviews.py
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from .forms import LeaveRequestForm
from django.shortcuts import render_to_response
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 HttpResponseRedirect("/thanks/")
else:
return auto_fill_form(request)
def leaves_sick(request):
data = Leave.objects.filter(employee_ID = request.user.username)
sl = "sg"
for obj in data:
if obj.type_of_leave == 'Sick Leave':
sl += obj.date_diff
return render(request, "status.html",{'sl':data})forms.py
from django.forms import ModelForm, Textarea, DateInput
from lrequests.models import Leave
class LeaveRequestForm(ModelForm):
class Meta:
fields = ("name", "type_of_leave", "from_date", "to_date")
model = Leaveurls.py
from django.urls import path, include
from . import views
app_name='lrequests'
urlpatterns = [
path('lrequests/',views.leaveRequest, name = 'request'),
path('status/', views.get_data, name = 'status'),
path('status/', views.leaves_sick, name = 'sick'),
]基本上,这是一个处理员工出勤、休假类型等的函数。如果员工请求休假类型为“el”(带薪休假),我需要返回他过去从数据库中请求休假的次数(假设数据库中有多个用户的请求)。
我在研究“休假管理系统”。我需要知道一个用户要求休假的时间。最初,用户使用ModelForms向管理员发送休假请求表单。有"earned_leave“、.等休假类型。现在我需要检索数据,员工在"earned_leave”、"paid_leave“、.等上请求休假的次数,并在模板中反映该数字。
*更新-我使用的是默认的dbsqlite3 db。
def leave_count(request):
queryset = Leave.objects.filter(employee_ID = request.user.username, type_of_leave = 'Sick Leave')
return render(request, "history.html", {'queryset' : queryset})从那以后,我不知道如何查询我在views.py中输入的数据库。它没有起作用。
发布于 2018-08-28 12:15:53
您可以在模型中解决这个问题:
在您的Leave中-您将users作为外键。在用户侧模型中,您实际上可以编写:
def get_el(self):
el = 0
for x in self.Leave.iterator():
if x.type_of_leave == 'earned_leave':
el++
return el在模板中-您实际上可以编写user.get_el来呈现叶子。
您需要使用一些名为"related_name"的概念。此外,您还需要适当地扩展用户模型。
祝好运!
https://stackoverflow.com/questions/52056526
复制相似问题