python - 如何对views.py 进行编码,以便表单数据存储在我的数据库(/admin)中?使用 Django (v2)
问题描述
这是一个用户/员工请假并且管理员可以看到的项目。
模型.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):
user = models.ForeignKey(User, on_delete = models.CASCADE, null =True)
name = models.CharField(max_length = 50)
employee_ID = models.CharField(max_length = 20)
department = models.CharField(max_length = 15)
designation = models.CharField(max_length = 15)
type_of_leave = models.CharField(max_length = 15, choices = CHOICES, default = None)
from_date = models.DateField()
to_date = models.DateField()
reporting_manager = models.CharField(max_length = 50, default = None)
reason = models.CharField(max_length= 180)
def __str__(self):
return self.name
表格.py
from django import forms
from lrequests import models
CHOICES = (('1','Earned Leave'),('2','Casual Leave'),('3','Sick Leave'),('4','Paid Leave'))
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
管理员.py
from django.contrib import admin
from . import models, forms
class LeaveAdmin(admin.ModelAdmin):
form = forms.LeaveRequestForm
admin.site.register(models.Leave, LeaveAdmin)
在 views.py 文件中,我不确定如何编写代码将数据存储在数据库中。这样管理员就可以看到从表单中获取的数据。
视图.py
from django.shortcuts import render
from django.http import HttpResponseRedirect
from .forms import LeaveRequestForm
from django.views.generic import TemplateView
def leaveRequest(request):
form_class = LeaveRequestForm
if request.method == "POST":
form = LeaveRequestForm(request.POST)
if form.is_valid():
leave = form.save(commit = False)
return HttpResponse("Sucessfully submitted")
else:
return render(request, "request_form.html", {'form' : form_class})
这是我的模板。
{% extends "base.html" %}
{% block content %}
<div class="container">
<h4>
<form role="form", method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type = "submit">Submit</button>
</form>
</h4>
</div>
{% endblock %}
解决方案
这是一个基本问题,但这是你应该做的
def leaveRequest(request):
form_class = LeaveRequestForm
if request.method=='POST': #executes when you submit the form
form = LeaveRequestForm(request.POST) #gets the form's data
if form.is_valid(): #checks if the data is valid
lvreq = form.save() #saves the data
return HttpResponse('Saved')
else:
return HttpResponse('invalid data entered') #error message
return render(request, "request_form.html", {'form' : form_class})
推荐阅读
- r - ggplot 上 geom_point 和 geom_smooth 的不同色阶
- javascript - 在异步功能之前反应 usestate setvalue
- python - 将Django视图返回数据放入响应数据
- javascript - Bootstrap 模态显示所有图像,不限于任何给定选项卡中的图像
- java - Flutter - getApplicationDocumentsDirectory() : 如何在 android 和 iOS 中获取路径
- gradle - 无法执行 gradle - 非法选项:D
- spyder - 如何在 spyder 中禁用函数签名的自动完成
- c - 在没有任何动态内存分配功能的情况下复制文件内容
- django - 如何为 Django 管理命令处理锁定制作装饰器?
- javascript - 在屏幕上居中一个 window.confirm 对话框