Когда я удаляю одну запись в шаблоне, все записи удаляются - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть две модели ребенок и академия , с помощью которых эти две модели связаны друг с другом

вот дочерние модели

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, содержащий delete функциональность вместо удаления одной записи академии с указанным c дочерним элементом удаляются все сведения академии c об этом конкретном c дочернем

def delete_academy(request,pk):
    child=get_object_or_404(Child_detail,pk=pk)
    academy=Academic.objects.filter(Student_name=child)
    if request.method == 'POST':
        academy.delete()
        return redirect('more',pk=pk)  
    context={
        'child':child,
        #'form':form
    }     
    return render(request,'functionality/more/academy/delete.html',context)   

1 Ответ

0 голосов
/ 14 апреля 2020

Вы выбираете все академии этого ребенка:

academy=Academic.objects.filter(Student_name=child)

Затем вы удаляете их все

academy.delete()

Вместо этого вы должны указать, какую академию вы хотите удалить в методе фильтра.

academy=Academic.objects.filter(Student_name=child, Class="foo")

Если вы хотите удалить первый результат:

academy[0].delete()
...