首页 > 解决方案 > 如何对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 %}

标签: pythondjangodjango-modelsdjango-formsdjango-views

解决方案


这是一个基本问题,但这是你应该做的

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})

推荐阅读