Django - Определение значения поля в модели - Просмотры
Мне нужно перебрать все полевые объекты модели в Django. После просмотра мне нужно определить, что в любой из записей данных это конкретное поле(тип) равно "Date1". Если да, то мне нужно, чтобы оно отправило переменную(val), которая является строкой, равной "True", в шаблоны Django. У меня все готово, все кажется простым, и кажется, что это должно работать. Сама по себе переменная val может отправлять значение шаблону, когда она не находится в операторе if, и цикл for также работает правильно. Даже когда "Date1" существует как значение в поле типа записи в модели "Field_Repo1", val не отправляется и оператор if никогда не итерируется (я знаю это с помощью prints). Несмотря ни на что оператор if никогда не выполняется. Код ниже. Заранее спасибо.
context = {}
context['Field_Repo1'] = Field_Repo1.objects.filter(user=response.user)
for type1 in Field_Repo1.objects.values_list('type'):
if type1 == "Date1":
val = "True"
context['val'] = val
print(val)
print(AHHHHHHHHHHHH)
if response.method == 'POST':
form = Field_Repo1_Form(response.POST, response.FILES)
if form.is_valid():
instance = form.save(commit=False)
instance.user = response.user
instance.save()
response.user.Field_Repo1.add(instance)
return redirect('repo1')
else:
form = Field_Repo1_Form()
context['form'] = form
return render(response, 'sheets/add_fields/repo1_add_field.html', context)
Функция values_list()
возвращает набор кортежей. Оператор в цикле for
if type1 == "Date1":
пытается сравнить равенство между "Date1"
и кортежем, что никогда не будет верным. Все кортежи в наборе запросов имеют длину 1, поскольку вы передали только одно поле в функцию values_list()
, поэтому вы должны быть в состоянии сделать if type1[0] == "Date1":
для вашего сравнения.