Django 新手,我创建了一个简单的表单如下this https://www.youtube.com/watch?v=3XOS_UpJirU教程,我的表单正确地将数据保存在我的 Postgres 连接的本地数据库中。我想知道,每当将有效表单保存到数据库中时,如何触发函数?我想要运行的代码是一个用 python 文件编写的简单函数,它对第一个表单给出的最新数据进行一些处理。我希望它仅在保存有效的表单数据时运行,并且想知道 django 信号触发器是否是我的选择。请随时询问任何进一步的说明。换句话说,我想对数据库中存在的数据(由表单填写)进行一些后处理,并仅在数据库中输入有效数据时触发后处理.
这是我的代码:
视图.py
from django.shortcuts import render
from django.http import HttpResponse
from .forms import auditform, ClientAuditForm
from django.db.models.signals import post_save
from . import rocode
# def auditingfun(request):
# return HttpResponse('Auditing form works')
# # Create your views here.
def auditingfun(request):
if request.method == 'POST':
forminput = auditform(request.POST)
if forminput.is_valid():
Name = forminput.cleaned_data['Name']
Origin = forminput.cleaned_data['Origin']
ClientAddress = forminput.cleaned_data['ClientAddress']
DispatchType = forminput.cleaned_data['DispatchType']
ETA = forminput.cleaned_data['ETA']
GSTIN = forminput.cleaned_data['GSTIN']
# print(GSTIN,Name,Origin,Destination,MaterialType,Preference,ClientAddress,DispatchType,ETA)
forminput = auditform(request.POST)
return render(request, 'auditing/auditform.html', {'forminput': forminput} )
forms.py
from django import forms
from .models import auditModel
class auditform(forms.Form):
Origin = forms.CharField()
Destination = forms.CharField()
MaterialType = forms.CharField()
Preference = forms.CharField()
ClientAddress = forms.CharField(widget=forms.Textarea)
Name = forms.CharField()
GSTIN = forms.IntegerField()
DispatchType = forms.ChoiceField(choices=[('Question','Inbound'),('Other','Outbound')])
ETA = forms.CharField()
class ClientAuditForm(forms.ModelForm):
class Meta:
model = auditModel
fields = ('Origin','Destination','MaterialType','GSTIN','Name','Preference','ClientAddress','DispatchType','ETA')
为了简单起见,想象一下自定义代码(在views.py 文件中作为rocode.py 导入),我刚刚添加了输入的数据并将数据存储在同一数据库的不同列中。