Python 如何从Django中永久删除记录?
型号:- 我有一个员工模型Python 如何从Django中永久删除记录?,python,django,django-models,django-rest-framework,django-views,Python,Django,Django Models,Django Rest Framework,Django Views,型号:- 我有一个员工模型 class Staffs(models.Model): id = models.AutoField(primary_key=True) admin = models.OneToOneField(CustomUser, on_delete = models.CASCADE) address = models.TextField() created_at = models.DateTimeField(auto_now_add=True)
class Staffs(models.Model):
id = models.AutoField(primary_key=True)
admin = models.OneToOneField(CustomUser, on_delete = models.CASCADE)
address = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
objects = models.Manager()
然后我有一个主题模型
class Subjects(models.Model):
id =models.AutoField(primary_key=True)
subject_name = models.CharField(max_length=255)
course_id = models.ForeignKey(Courses, on_delete=models.CASCADE, default=1) #need to give defauult course
staff_id = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
#created_at = models.DateTimeField(auto_now_add=True)
#updated_at = models.DateTimeField(auto_now=True)
objects = models.Manager()
观点:-
def add_subject(request):
courses = Courses.objects.all()
staffs = CustomUser.objects.filter(user_type='2')
context = {
"courses": courses,
"staffs": staffs
}
return render(request, 'hod_template/add_subject_template.html', context)
def add_subject_save(request):
if request.method != "POST":
messages.error(request, "Method Not Allowed!")
return redirect('add_subject')
else:
subject_name = request.POST.get('subject')
course_id = request.POST.get('course')
course = Courses.objects.get(id=course_id)
staff_id = request.POST.get('staff')
staff = CustomUser.objects.get(id=staff_id)
try:
subject = Subjects(subject_name=subject_name, course_id=course, staff_id=staff)
subject.save()
messages.success(request, "Subject Added Successfully!")
return redirect('add_subject')
except:
messages.error(request, "Failed to Add Subject!")
return redirect('add_subject')
def manage_subject(request):
subjects = Subjects.objects.all()
context = {
"subjects": subjects
}
return render(request, 'hod_template/manage_subject_template.html', context)
def edit_subject(request, subject_id):
subject = Subjects.objects.get(id=subject_id)
courses = Courses.objects.all()
staffs = CustomUser.objects.filter(user_type='2')
context = {
"subject": subject,
"courses": courses,
"staffs": staffs,
"id": subject_id
}
return render(request, 'hod_template/edit_subject_template.html', context)
def edit_subject_save(request):
if request.method != "POST":
HttpResponse("Invalid Method.")
else:
subject_id = request.POST.get('subject_id')
subject_name = request.POST.get('subject')
course_id = request.POST.get('course')
staff_id = request.POST.get('staff')
try:
subject = Subjects.objects.get(id=subject_id)
subject.subject_name = subject_name
course = Courses.objects.get(id=course_id)
subject.course_id = course
staff = CustomUser.objects.get(id=staff_id)
subject.staff_id = staff
subject.save()
messages.success(request, "Subject Updated Successfully.")
# return redirect('/edit_subject/'+subject_id)
return HttpResponseRedirect(reverse("edit_subject", kwargs={"subject_id":subject_id}))
except:
messages.error(request, "Failed to Update Subject.")
return HttpResponseRedirect(reverse("edit_subject", kwargs={"subject_id":subject_id}))
# return redirect('/edit_subject/'+subject_id)
def delete_subject(request, subject_id):
subject = Subjects.objects.get(id=subject_id)
try:
subject.delete()
messages.success(request, "Subject Deleted Successfully.")
return redirect('manage_subject')
except:
messages.error(request, "Failed to Delete Subject.")
return redirect('manage_subject')
现在,当我想添加一个主题时,它是这样进行的
主题名称:-
蟒蛇
(让我从我参加的课程列表中选择,如MCA、BCA等)
课程:-
工商管理硕士
(让我从输入的员工名单中选择,如Pavan Kumar、Naveen Patil等)
工作人员:-
艾弗aaa
艾伦·德克
富尔顿·斯特朗
帕万·库马尔
纳文帕蒂尔
我面临的主要问题是,我已经删除了像Ivor aaa、alan decker和Fulton strong这样的员工价值观,但它仍然显示在价值观列表中。我如何摆脱这些价值观
我试过了
staff.objects.all.delete()但列表中仍有Ivor aaa、alan decker和fulton strong等值staff.objects.all().delete()可以显示相关模板吗?您的
staff\u id
是一个FK toCustomUser
模型。它将列出您的用户,而不是您的staff
模型中的实例。