Django - Отфильтровать все значения из одного поля в модели и удалить их
Частью моего сайта на django является то, что когда пользователь удаляет одно значение из одной модели, он удаляет все данные в поле другой модели. В настоящее время у меня проблемы с фильтрацией всех значений из поля в модели для удаления. Я знаю, что весь мой остальной код работает, потому что в качестве теста я могу сделать...
delete = Data_Repo1.objects.all()filter(user=request.user)
delete.delete()
Это отлично работает при вводе в мой код ниже. Моя проблема в том, что мне нужно удалить все данные из поля "date1" в модели "Data_Repo1", а не удалять все данные из всех полей в модели "Date_Repo1". Я устанавил "values("date1")" и "values_list("date1")" вместо ".all()" в приведенном выше коде, но получаю ошибку "Cannot call delete() after .values() or .values_list()". Как еще я могу "отфильтровать" все значения одного поля из одной модели, чтобы удалить их? . Код ниже. Заранее спасибо.
def deletefield_repo1(request, pk):
context = {}
title = get_object_or_404(Field_Repo1, pk=pk) #Title is needed to have the database value to delete
context['title'] = Field_Repo1.objects.values_list('title', flat=True).filter(user=request.user).get(pk=pk) #Just to print the name fo the field to delete for the user
type = Field_Repo1.objects.values_list('type', flat=True).filter(user=request.user).get(pk=pk)
if request.method == "POST":
title.delete()
if type == 'Date1':
delete = Data_Repo1.objects.values('date1').filter(user=request.user)
delete.delete()
return HttpResponseRedirect('/front_page/sheets/repository1user/')
return render(request, 'sheets/delete_fields/repo1_delete_field.html', context)
Вы можете использовать функцию update()
, однако это не сохранит значения.
Поэтому я бы предложил итерировать отфильтрованный набор запросов и изменить поле на None
, предположив null=True
в определении модели.
qs_to_remove = Data_Repo1.filter(user=request.user)
for instance in qs_to_remove:
instance.date1 = None
instance.save()