【发布时间】:2018-08-28 11:15:19
【问题描述】:
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.name
views.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 = Leave
urls.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 数据库。
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 中的数据库。没用。
【问题讨论】:
-
custom
templatetags可能就是您想要的。 -
@serbia99 你能给我举个例子吗,我试过了,但失败得很惨。
-
你是什么意思“我想声明一个名为'el'的局部变量,从而在每次调用时增加它”?
-
@brunodesthuilliers 喜欢不将
el声明为变量,如何增加呢? -
@Jose 这没有任何意义——没有变量就不能增加变量。这并没有回答这个问题:“每次调用时增加它”是什么意思?
标签: python django view django-templates