如果在django admin的第一个模型表单中输入的数据正确,如何在第一个模型表单中提供第二个模型表单?
我的情况很复杂如果在django admin的第一个模型表单中输入的数据正确,如何在第一个模型表单中提供第二个模型表单?,django,django-forms,django-admin,Django,Django Forms,Django Admin,我的情况很复杂 from types import * from django import forms from django.db.models import Q from django.core.exceptions import ValidationError from schdeules.models import tbmsttemplate,tbmstreviewsched,tbtrnrevdepartments,tbtrnrevdesignations,tbmstappraisal
from types import *
from django import forms
from django.db.models import Q
from django.core.exceptions import ValidationError
from schdeules.models import tbmsttemplate,tbmstreviewsched,tbtrnrevdepartments,tbtrnrevdesignations,tbmstappraisalsched,tbtrnappraisalreview,tbmstdepartment,tbmstpart,tbmstsection,tbtrnappraisalquestion
class tbmstappraisalschedForm(forms.ModelForm):
def clean(self):
"""
Override the default clean method to check whether this course has been already inputted.
"""
cleaned_data = super(tbmstappraisalschedForm, self).clean()
depart_id = self.cleaned_data.get('intDeptID')
fromdate = str(self.cleaned_data.get('sdtFromDate'))
todate = str(self.cleaned_data.get('sdtToDate'))
pk=self.instance.pk
res = tbmstappraisalsched.objects.filter(
Q(sdtFromDate__lte=fromdate,sdtToDate__gte=fromdate) | \
Q(sdtFromDate__lte=todate,sdtToDate__gte=todate), ~Q(intAppSchedID=pk),
intDeptID=depart_id.pk,
)
if(res).exists():
raise ValidationError('The slot is present for selected dates and selected department')
else:
res_revs = tbmstreviewsched.objects.filter(
Q(sdtFromDate__lte=fromdate,sdtToDate__gte=fromdate) | \
Q(sdtFromDate__lte=todate,sdtToDate__gte=todate),
tbtrnrevdepartments__intDeptID=depart_id.pk,
)
if(res_revs).exists():
show review scheds such that user can select needed review scheds and save data in two models at once i.e; tbmstappraisalsched,tbtrnappraisalreview
return self.cleaned_data
else:
raise ValidationError('Reviewschedule slots are not present for the selected dates and selected department')
class Meta:
model = tbmstappraisalsched
在上面的代码中,我必须从tbmstreviewsched中获取审查计划,并向用户显示,以便用户可以选择所需的审查计划,并同时将数据保存在两个模型中,这样,数据必须保存在tbmstappraisalsched中,该模型返回intappschedid(自动增量值)然后,必须使用新的intappschedid和选定的审阅计划ID将数据保存在tbtrnappraisalreview中。
我的admin.py代码是
from schdeules.models import tbmsttemplate,tbmstreviewsched,tbtrnrevdepartments,tbtrnrevdesignations,tbmstappraisalsched,tbtrnappraisalreview,tbmstpart,tbmstsection,tbtrnappraisalquestion
from django.core.exceptions import ValidationError
from forms import tbmstappraisalschedForm
class QuestionsInline(admin.StackedInline):
model = tbtrnappraisalquestion
extra = 0
class TemplatesAdmin(admin.ModelAdmin):
readonly_fields = ("intUpdatedBy",)
inlines = [QuestionsInline]
def save_model(self, request, obj, form, change):
obj.intUpdatedBy = request.user.id
obj.save()
class ReviewDesignationInline(admin.StackedInline):
model = tbtrnrevdesignations
extra = 1
class ReviewDepartmentInline(admin.StackedInline):
model = tbtrnrevdepartments
exclude = ['intUpdatedBy']
extra = 1
class ReviewScheduleAdmin(admin.ModelAdmin):
inlines = [ReviewDepartmentInline,ReviewDesignationInline]
exclude = ['intUpdatedBy']
def save_model(self, request, obj, form, change):
obj.intUpdatedBy = request.user.id
obj.save()
class AppraisalScheduleAdmin(admin.ModelAdmin):
exclude = ['intUpdatedBy']
form = tbmstappraisalschedForm
def save_model(self, request, obj, form, change):
obj.intUpdatedBy = request.user.id
obj.save()
class AppraisalReviewAdmin(admin.ModelAdmin):
exclude = ['intUpdatedBy']
def save_model(self, request, obj, form, change):
obj.intUpdatedBy = request.user.id
obj.save()
admin.site.register(tbmstpart)
admin.site.register(tbmstsection)
admin.site.register(tbmsttemplate,TemplatesAdmin)
admin.site.register(tbmstreviewsched,ReviewScheduleAdmin)
admin.site.register(tbmstappraisalsched,AppraisalScheduleAdmin)
admin.site.register(tbtrnappraisalreview,AppraisalReviewAdmin)
那么你的问题是什么?您的标题是关于django admin,但您没有提供任何
admin.py
code。我提供了admin.py文件代码