У меня есть две модели ребенка и академия, благодаря которым эти две модели связаны друг с другом
вот дочерние модели
from django.db import models
class Child_detail(models.Model):
Firstname = models.CharField(max_length = 50)
Lastname = models.CharField(max_length = 50)
Tribe = models.CharField(max_length = 50)
def __str__(self):
return self.Firstname
Вот модель академии
from django.db import models
from child.models import Child_detail
class Academic(models.Model):
Student_name = models.ForeignKey(Child_detail,on_delete = models.CASCADE)
Class = models.CharField(max_length = 50)
Average_grade = models.CharField(max_length = 10)
def __str__(self):
return str(self.Student_name)
Вот мой файл views.py, который содержит функциональность edit , в шаблоне он не отображает поля для редактирования, поэтому я должен снова написать эти поля и даже сделать это ничего не редактировать
def edit_academy(request,pk):
child=get_object_or_404(Child_detail,pk=pk)
form = AcademicForm(instance=child)
if request.method == "POST":
form=AcademicForm(request.POST,instance=child)
if form.is_valid():
form.save()
return redirect('more',pk=pk)
context={
'form':form,
'child':child
}
return render(request,'functionality/edit.html',context)
Вот мой файл шаблона
{% extends 'base.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block content %}
<section id="register" class="bg-light py-5">
<div class="container">
<div class="row">
<div class="col-md-6 mx-auto">
<div class="card">
<div class="card-header bg-primary text-white">
<h4>
<i class="fas fa-user-plus"></i> Edit {{child.Firstname | title}} {{child.Lastname | title}} Academic Details </h4>
</div>
<div class="card-body">
<form action="" method="post" autocomplete="on">
{% csrf_token %}
<div class="form-group">
{{form | crispy}}
<input type="submit" value="Save" class="btn btn-primary btn-block">
</form>
</div>
</div>
</div>
</div>
</section>
{% endblock %}
А вот мой файл формы Academi c
class AcademicForm(forms.ModelForm):
class Meta:
model=Academic
fields='Class','Date','Average_grade','Overall_position','Total_number_in_class'
labels={
'Average_grade':'Average Grade',
'Overall_position':'Overall Position',
'Total_number_in_class':'Total Number In Class'
}