首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写函数/定义,以便在HTML模板Django中呈现?

如何编写函数/定义,以便在HTML模板Django中呈现?
EN

Stack Overflow用户
提问于 2018-08-28 11:15:19
回答 2查看 58关注 0票数 0

models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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。

代码语言:javascript
复制
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中输入的数据库。它没有起作用。

EN

Stack Overflow用户

发布于 2018-08-28 12:15:53

您可以在模型中解决这个问题:

在您的Leave中-您将users作为外键。在用户侧模型中,您实际上可以编写:

代码语言:javascript
复制
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"的概念。此外,您还需要适当地扩展用户模型。

祝好运!

票数 -1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52056526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档