Новичок Django здесь, я создал простую форму после этого учебника, и моя форма правильно сохраняет данные в моей локальной базе данных, связанной с Postgres. Мне было интересно, как я могу вызвать функцию, когда действительная форма сохраняется в базе данных? Код, который я хочу запустить, представляет собой простую функцию, которая написана в файле Python и выполняет некоторую обработку последних данных, предоставленных первой формой. Я хочу, чтобы он запускался только тогда, когда сохранены правильные данные формы, и мне было интересно, если мой путь запуска триггера сигнала django. Не стесняйтесь спрашивать о любых дальнейших разъяснениях. Другими словами, Я хочу выполнить некоторую постобработку данных, присутствующих в базе данных, которая заполняется формой, и запустить постобработку только тогда, когда в базу данных введены действительные данные * 1004. *.
Вот мой код:
views.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). Я только что добавил введенные данные и сохранил данные в той же базе данных, в другом столбце.