Я хочу использовать переменную внутри def__init__
снаружи def__init__
. Это def__init__
в моем классе:
class UserResponseSearchForm(forms.Form):
def __init__(self, *args, **kwargs):
qry = kwargs.pop('qry')
super(UserResponseSearchForm,self).__init__(*args, **kwargs)
Я хочу использовать переменную вопрос снаружи def__init__
вот так:
class UserResponseSearchForm(forms.Form):
def __init__(self, *args, **kwargs):
qry = kwargs.pop('qry')
super(UserResponseSearchForm,self).__init__(*args, **kwargs)
gejala_id1 = forms.ModelMultipleChoiceField(queryset=Gejala.objects.all().values_list('gejala', flat=True).distinct().filter(gejala__icontains = qry).order_by('gejala'), widget=forms.CheckboxSelectMultiple, required=False)
Я использую переменную вопрос в gejala__icontains = запрос следующим образом:
filter(gejala__icontains = qry)
И он возвращает имя 'qry' не определено. Что за проблема с этим? А как использовать переменную вопрос? Надеюсь, кто-нибудь может мне помочь.
Но вы все равно не можете использовать его внутри определения gejala_id1
, так как оно выполняется во время определение, а не во время выполнения.
Но я должен использовать его внутри gejala_id1
, чтобы получить фактические данные
ваше поле gejala_id1
определено вне класса UserResponseSearchForm
, поэтому вы все равно не можете использовать его где-либо в своем коде django. Я думаю, что вы хотите определить поле как часть вашей формы, верно?
Мой gejala_id1
определен внутри класса UserResponseSearchForm
и def __init__
внутри этого класса. Итак, я хочу использовать переменную qry
внутри def __init__
Это нужно сделать внутри __init__
:
class UserResponseSearchForm(forms.Form):
def __init__(self, *args, **kwargs):
qry = kwargs.pop('qry')
super(UserResponseSearchForm,self).__init__(*args, **kwargs)
self.fields['gejala_id1'] = forms.ModelMultipleChoiceField(queryset=Gejala.objects.filter(gejala__icontains = qry).distinct().order_by('gejala'), widget=forms.CheckboxSelectMultiple, required=False)
Обратите внимание, что вы должны нет делать values_list('gejala', flat=True)
для ModelMultipleChoiceField
, потому что это поле ожидает объекты, а не плоский список строк.
Хорошо, спасибо, а как мне вызвать html-файл и сделать его формой с множественным выбором?
Вы делаете это на свой взгляд. Я полагаю, вы где-то используете форму... Если вы не знаете, как отображать форму django, прочитайте это
Хорошо, спасибо, это работа, но данные не различимы. Я должен различать данные
В каком смысле не различаются? Что нужно выделить? вы можете передать аргумент функции distinct
, чтобы указать, что должно быть отличным, без аргумента он просто гарантирует разные объекты (т.е. отдельный первичный ключ).
Имя gejala
я хочу выделить. Прежде чем я использую def __init__
forms.ModelMultipleChoiceField(queryset=Gejala.objects.filter(gejala__icontains = qry).distinct().order_by('gejala'), widget=forms.CheckboxSelectMultiple, required=False)
имя gejala
отличного. После того, как я использую def __init___
имя gejala
не отличается
Тогда используйте distinct('gelaja')
. Я сказал в своем предыдущем комментарии, что вы можете передать это как аргумент.
NotSupportedError at /diagnosis/results/ DISTINCT ON fields is not supported by this database backend
это ошибка
Какую базу данных вы используете?
Моя база данных sqlite
Можете ли вы исправить отступ, пожалуйста? Непонятно, как вы хотите назвать вещи.