У меня есть несколько моделей, и они связаны с другими моделями. Каждая модель зависит от другой модели, но теперь она не зависит.
[enter image description here][1][here before selecting sub department i have to select main department and sub comes under main department.][2]
[1]: https://i.sstatic.net/3GSQjtkl.png
[2]: https://i.sstatic.net/Tp9kg2uJ.png
Вот эти модели. models.py
class Department(models.Model):
department_name = models.CharField(max_length=255) # ✅ Correct field
company_name = models.ForeignKey(CompanyName, on_delete=models.CASCADE)
status = models.CharField(max_length=20, choices=[('active', 'Active'), ('inactive', 'Inactive')])
def __str__(self):
return self.department_name
class SubDepartment(models.Model):
sub_department_name=models.CharField(max_length=100,null=False,blank=False)
department_name=models.ForeignKey(Department,on_delete=models.CASCADE)
company_name=models.ForeignKey(CompanyName,on_delete=models.CASCADE)
status=models.CharField(max_length=20, choices=[('active','Active'),('inactive','Inactive')])
def __str__(self):
нужно ли вносить какие-либо изменения в формы или представления?
forms.py
class DepartmentForm(forms.ModelForm):
class Meta:
model = Department
fields = ['department_name', 'company_name', 'status']
class SubDepartmentForm(forms.ModelForm):
class Meta:
model = SubDepartment
fields = ['sub_department_name', 'department_name', 'company_name', 'status']
я уже указал в полях один ко многим, но это не работает как зависимость. здесь, когда я выбираю отдел, должен появиться только соответствующий подотдел, но без выбора отдела подотдел выводится в списке.
**views.py**
def dept_view(request):
if request.method == "POST":
form = DepartmentForm(request.POST)
if form.is_valid():
form.save()
return redirect('department-view')
else:
form = DepartmentForm()
depts = Department.objects.all()
return render(request, "dept.html", {"form": form, "depts": depts})
# @login_required(login_url="signin")
def delete_department(request, department_id):
if request.method == "POST":
department = get_object_or_404(Department, id=department_id)
department.delete()
return JsonResponse({"success": True})
return JsonResponse({"success": False})
def sub_dept_view(request):
if request.method == "POST":
form = SubDepartmentForm(request.POST)
if form.is_valid():
form.save()
return redirect("sub-department") # Redirect after successful submission
else:
form = SubDepartmentForm()
sub_depts = SubDepartment.objects.all()
return render(request, "sub_department.html", {"form": form, "sub_depts": sub_depts})
def delete_sub_department(request, sub_department_id):
if request.method == "POST":
sub_department = get_object_or_404(SubDepartment, id=sub_department_id)
sub_department.delete()
return JsonResponse({"success": True})
return JsonResponse({"success": False})