Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-05-01 Thread Sergei Sokov
А не могли бы вы подсказать как вызвать две разные формы, от двух разных 
классов в models.py, на одной странице?
Нужно передать в контекст views.py две формы, и эти две формы по разному 
назвать.

class SkladCreateView(LoginRequiredMixin, CustomSuccessMessageMixin, 
CreateView):
model = Sklad
template_name = 'sklad.html'
form_class = SkladForm
success_url = reverse_lazy('sklad')
success_msg = 'Материал сохранён'
def get_context_data(self, **kwargs):
kwargs['list_sklad'] = Sklad.objects.all().order_by('material')
return super().get_context_data(**kwargs)
# это функция для назначения автора
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.author = self.request.user
self.object.save()
return super().form_valid(form)




четверг, 30 апреля 2020 г., 19:51:54 UTC+2 пользователь hend hend написал:
>
> Кажется я понял, вы влепили два init в класс? А зачем...
> def __init__(self, *args, **kwargs):
> # get 'user' param from kwargs
> user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> # set class attrs  
> for field in self.fields.values():
>  field.widget.attrs['class'] = 'form-control'
> # set 'name_job' queryset
> self.fields['name_job'].queryset = TypJob.objects.filter(
> author__id=user.id)
>
> четверг, 30 апреля 2020 г., 20:00:57 UTC+3 пользователь Sergei Sokov 
> написал:
>>
>> Так перестает работать первоначальная задача
>>
>> четверг, 30 апреля 2020 г., 18:14:38 UTC+2 пользователь hend hend написал:
>>>
>>> Не совсем понимаю, это init какого класса...Но можно попробовать так:
>>> def __init__(self, *args, **kwargs):
>>> # delete 'user' from kwargs before calling perent init
>>> user = kwargs.pop('user', None)
>>> super().__init__(*args, **kwargs)
>>> #количество строк в поле комментариев
>>> self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>>> for field in self.fields:
>>> self.fields[field].widget.attrs['class'] = 'form-control'
>>>
>>>
>>> четверг, 30 апреля 2020 г., 15:46:43 UTC+3 пользователь Sergei Sokov 
>>> написал:

 так работает, но если я добавляю вот это для редактирования отображения 
 полей в форме
 def __init__(self, *args, **kwargs):
 super().__init__(*args, **kwargs)
 #количество строк в поле комментариев
 self.fields['comment'].widget = Textarea(attrs={'rows': 3})
 for field in self.fields:
 self.fields[field].widget.attrs['class'] = 'form-control'
 тогда у меня вот такая ошибка
 TypeError at /new-big-print-order

 __init__() got an unexpected keyword argument 'user'


 Я так понимаю потому что во views.py вот это

 def get_form_kwargs(self):
 kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
 kwargs['user'] = self.request.user
 return kwargs



 четверг, 30 апреля 2020 г., 12:19:35 UTC+2 пользователь hend hend 
 написал:
>
> Уже приводил вариант без self, хотя и с self должно бы работать 
> нормально, но раз ругается попробуйте без self.
> def __init__(self, *args, **kwargs):
> # get 'user' param from kwargs
> # user without self
> user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> # set 'name_job' queryset
> # user.id without self
> self.fields['name_job'].queryset = TypJob.objects.filter(
> author__id=user.id)
>
>
> четверг, 30 апреля 2020 г., 11:34:28 UTC+3 пользователь Sergei Sokov 
> написал:
>>
>> А как тогда?
>> self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
>> self.user.id)
>> как тогда фильтр будет работать?
>>
>> среда, 29 апреля 2020 г., 20:36:00 UTC+2 пользователь hend hend 
>> написал:
>>>
>>> *Не нужно нигде  в классе формы обращаться к  'self.user'.  *
>>>
>>> среда, 29 апреля 2020 г., 19:49:45 UTC+3 пользователь Sergei Sokov 
>>> написал:

 без self такая ошибка

 'OrderForm' object has no attribute 'user'


 среда, 29 апреля 2020 г., 17:56:10 UTC+2 пользователь hend hend 
 написал:
>
> Если 'user'  в классе не нужен, можно не вешать его на self. 
> просто вместо 'self.user' используем 'user': в этом случае 'user' 
> просто 
> локальная переменная метода init.
> def __init__(self, *args, **kwargs):
> # get 'user' param from kwargs
> user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> # set 'name_job' queryset
> self.fields['name_job'].queryset = TypJob.objects.filter(
> author__id=user.id)
>

Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-30 Thread Sergei Sokov
Действительно!!
А я и не заметил.
Благодарю от всего сердца!!!
Это будет слишком нагло с моей стороны, но
можно ли ваш контакт, чтобы вас (или тебя) на прямую спрашивать разные 
вопросы касаемо джанго, я совсем новичок в этом деле и, например, этот 
вопрос задавал на разных форумах, но никто мне не смог помочь.
Если нет так нет, я кроме hend hend ничего не знаю из контактов.
Моя почта sokov точка tlt собака гмэйл точка ком

четверг, 30 апреля 2020 г., 19:51:54 UTC+2 пользователь hend hend написал:
>
> Кажется я понял, вы влепили два init в класс? А зачем...
> def __init__(self, *args, **kwargs):
> # get 'user' param from kwargs
> user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> # set class attrs  
> for field in self.fields.values():
>  field.widget.attrs['class'] = 'form-control'
> # set 'name_job' queryset
> self.fields['name_job'].queryset = TypJob.objects.filter(
> author__id=user.id)
>
> четверг, 30 апреля 2020 г., 20:00:57 UTC+3 пользователь Sergei Sokov 
> написал:
>>
>> Так перестает работать первоначальная задача
>>
>> четверг, 30 апреля 2020 г., 18:14:38 UTC+2 пользователь hend hend написал:
>>>
>>> Не совсем понимаю, это init какого класса...Но можно попробовать так:
>>> def __init__(self, *args, **kwargs):
>>> # delete 'user' from kwargs before calling perent init
>>> user = kwargs.pop('user', None)
>>> super().__init__(*args, **kwargs)
>>> #количество строк в поле комментариев
>>> self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>>> for field in self.fields:
>>> self.fields[field].widget.attrs['class'] = 'form-control'
>>>
>>>
>>> четверг, 30 апреля 2020 г., 15:46:43 UTC+3 пользователь Sergei Sokov 
>>> написал:

 так работает, но если я добавляю вот это для редактирования отображения 
 полей в форме
 def __init__(self, *args, **kwargs):
 super().__init__(*args, **kwargs)
 #количество строк в поле комментариев
 self.fields['comment'].widget = Textarea(attrs={'rows': 3})
 for field in self.fields:
 self.fields[field].widget.attrs['class'] = 'form-control'
 тогда у меня вот такая ошибка
 TypeError at /new-big-print-order

 __init__() got an unexpected keyword argument 'user'


 Я так понимаю потому что во views.py вот это

 def get_form_kwargs(self):
 kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
 kwargs['user'] = self.request.user
 return kwargs



 четверг, 30 апреля 2020 г., 12:19:35 UTC+2 пользователь hend hend 
 написал:
>
> Уже приводил вариант без self, хотя и с self должно бы работать 
> нормально, но раз ругается попробуйте без self.
> def __init__(self, *args, **kwargs):
> # get 'user' param from kwargs
> # user without self
> user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> # set 'name_job' queryset
> # user.id without self
> self.fields['name_job'].queryset = TypJob.objects.filter(
> author__id=user.id)
>
>
> четверг, 30 апреля 2020 г., 11:34:28 UTC+3 пользователь Sergei Sokov 
> написал:
>>
>> А как тогда?
>> self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
>> self.user.id)
>> как тогда фильтр будет работать?
>>
>> среда, 29 апреля 2020 г., 20:36:00 UTC+2 пользователь hend hend 
>> написал:
>>>
>>> *Не нужно нигде  в классе формы обращаться к  'self.user'.  *
>>>
>>> среда, 29 апреля 2020 г., 19:49:45 UTC+3 пользователь Sergei Sokov 
>>> написал:

 без self такая ошибка

 'OrderForm' object has no attribute 'user'


 среда, 29 апреля 2020 г., 17:56:10 UTC+2 пользователь hend hend 
 написал:
>
> Если 'user'  в классе не нужен, можно не вешать его на self. 
> просто вместо 'self.user' используем 'user': в этом случае 'user' 
> просто 
> локальная переменная метода init.
> def __init__(self, *args, **kwargs):
> # get 'user' param from kwargs
> user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> # set 'name_job' queryset
> self.fields['name_job'].queryset = TypJob.objects.filter(
> author__id=user.id)
>
> среда, 29 апреля 2020 г., 17:19:41 UTC+3 пользователь Sergei Sokov 
> написал:
>>
>> hend hend спасибо большое!
>> Работает!
>> Но!
>> *Теперь у меня не получается управлять внешним видом полей*
>>
>> Я хочу переопределить класс в форме, но "user" из представления 
>> попадает в этот __init__  тоже
>>
>>  

Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-30 Thread hend hend
Кажется я понял, вы влепили два init в класс? А зачем...
def __init__(self, *args, **kwargs):
# get 'user' param from kwargs
user = kwargs.pop('user', None)
super().__init__(*args, **kwargs)
# set class attrs  
for field in self.fields.values():
 field.widget.attrs['class'] = 'form-control'
# set 'name_job' queryset
self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
user.id)

четверг, 30 апреля 2020 г., 20:00:57 UTC+3 пользователь Sergei Sokov 
написал:
>
> Так перестает работать первоначальная задача
>
> четверг, 30 апреля 2020 г., 18:14:38 UTC+2 пользователь hend hend написал:
>>
>> Не совсем понимаю, это init какого класса...Но можно попробовать так:
>> def __init__(self, *args, **kwargs):
>> # delete 'user' from kwargs before calling perent init
>> user = kwargs.pop('user', None)
>> super().__init__(*args, **kwargs)
>> #количество строк в поле комментариев
>> self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>> for field in self.fields:
>> self.fields[field].widget.attrs['class'] = 'form-control'
>>
>>
>> четверг, 30 апреля 2020 г., 15:46:43 UTC+3 пользователь Sergei Sokov 
>> написал:
>>>
>>> так работает, но если я добавляю вот это для редактирования отображения 
>>> полей в форме
>>> def __init__(self, *args, **kwargs):
>>> super().__init__(*args, **kwargs)
>>> #количество строк в поле комментариев
>>> self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>>> for field in self.fields:
>>> self.fields[field].widget.attrs['class'] = 'form-control'
>>> тогда у меня вот такая ошибка
>>> TypeError at /new-big-print-order
>>>
>>> __init__() got an unexpected keyword argument 'user'
>>>
>>>
>>> Я так понимаю потому что во views.py вот это
>>>
>>> def get_form_kwargs(self):
>>> kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
>>> kwargs['user'] = self.request.user
>>> return kwargs
>>>
>>>
>>>
>>> четверг, 30 апреля 2020 г., 12:19:35 UTC+2 пользователь hend hend 
>>> написал:

 Уже приводил вариант без self, хотя и с self должно бы работать 
 нормально, но раз ругается попробуйте без self.
 def __init__(self, *args, **kwargs):
 # get 'user' param from kwargs
 # user without self
 user = kwargs.pop('user', None)
 super().__init__(*args, **kwargs)
 # set 'name_job' queryset
 # user.id without self
 self.fields['name_job'].queryset = TypJob.objects.filter(
 author__id=user.id)


 четверг, 30 апреля 2020 г., 11:34:28 UTC+3 пользователь Sergei Sokov 
 написал:
>
> А как тогда?
> self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
> self.user.id)
> как тогда фильтр будет работать?
>
> среда, 29 апреля 2020 г., 20:36:00 UTC+2 пользователь hend hend 
> написал:
>>
>> *Не нужно нигде  в классе формы обращаться к  'self.user'.  *
>>
>> среда, 29 апреля 2020 г., 19:49:45 UTC+3 пользователь Sergei Sokov 
>> написал:
>>>
>>> без self такая ошибка
>>>
>>> 'OrderForm' object has no attribute 'user'
>>>
>>>
>>> среда, 29 апреля 2020 г., 17:56:10 UTC+2 пользователь hend hend 
>>> написал:

 Если 'user'  в классе не нужен, можно не вешать его на self. просто 
 вместо 'self.user' используем 'user': в этом случае 'user' просто 
 локальная 
 переменная метода init.
 def __init__(self, *args, **kwargs):
 # get 'user' param from kwargs
 user = kwargs.pop('user', None)
 super().__init__(*args, **kwargs)
 # set 'name_job' queryset
 self.fields['name_job'].queryset = TypJob.objects.filter(
 author__id=user.id)

 среда, 29 апреля 2020 г., 17:19:41 UTC+3 пользователь Sergei Sokov 
 написал:
>
> hend hend спасибо большое!
> Работает!
> Но!
> *Теперь у меня не получается управлять внешним видом полей*
>
> Я хочу переопределить класс в форме, но "user" из представления 
> попадает в этот __init__  тоже
>
>  def __init__(self, *args, **kwargs):
>  super().__init__(*args, **kwargs)
>  #количество строк в поле комментариев
>  self.fields['comment'].widget = Textarea(attrs={'rows': 
> 3})
>  for field in self.fields:
>  self.fields[field].widget.attrs['class'] = 
> 'form-control'
>
>
> среда, 29 апреля 2020 г., 13:54:23 UTC+2 пользователь hend hend 
> написал:
>>
>>
>>
>> вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei 
>> Sokov написал:
>>>

Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-30 Thread hend hend
Это init какой формы?..контроллер  о котором мы говорим связан с 
формой  OrderForm насколько я понял..

четверг, 30 апреля 2020 г., 20:00:57 UTC+3 пользователь Sergei Sokov 
написал:
>
> Так перестает работать первоначальная задача
>
> четверг, 30 апреля 2020 г., 18:14:38 UTC+2 пользователь hend hend написал:
>>
>> Не совсем понимаю, это init какого класса...Но можно попробовать так:
>> def __init__(self, *args, **kwargs):
>> # delete 'user' from kwargs before calling perent init
>> user = kwargs.pop('user', None)
>> super().__init__(*args, **kwargs)
>> #количество строк в поле комментариев
>> self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>> for field in self.fields:
>> self.fields[field].widget.attrs['class'] = 'form-control'
>>
>>
>> четверг, 30 апреля 2020 г., 15:46:43 UTC+3 пользователь Sergei Sokov 
>> написал:
>>>
>>> так работает, но если я добавляю вот это для редактирования отображения 
>>> полей в форме
>>> def __init__(self, *args, **kwargs):
>>> super().__init__(*args, **kwargs)
>>> #количество строк в поле комментариев
>>> self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>>> for field in self.fields:
>>> self.fields[field].widget.attrs['class'] = 'form-control'
>>> тогда у меня вот такая ошибка
>>> TypeError at /new-big-print-order
>>>
>>> __init__() got an unexpected keyword argument 'user'
>>>
>>>
>>> Я так понимаю потому что во views.py вот это
>>>
>>> def get_form_kwargs(self):
>>> kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
>>> kwargs['user'] = self.request.user
>>> return kwargs
>>>
>>>
>>>
>>> четверг, 30 апреля 2020 г., 12:19:35 UTC+2 пользователь hend hend 
>>> написал:

 Уже приводил вариант без self, хотя и с self должно бы работать 
 нормально, но раз ругается попробуйте без self.
 def __init__(self, *args, **kwargs):
 # get 'user' param from kwargs
 # user without self
 user = kwargs.pop('user', None)
 super().__init__(*args, **kwargs)
 # set 'name_job' queryset
 # user.id without self
 self.fields['name_job'].queryset = TypJob.objects.filter(
 author__id=user.id)


 четверг, 30 апреля 2020 г., 11:34:28 UTC+3 пользователь Sergei Sokov 
 написал:
>
> А как тогда?
> self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
> self.user.id)
> как тогда фильтр будет работать?
>
> среда, 29 апреля 2020 г., 20:36:00 UTC+2 пользователь hend hend 
> написал:
>>
>> *Не нужно нигде  в классе формы обращаться к  'self.user'.  *
>>
>> среда, 29 апреля 2020 г., 19:49:45 UTC+3 пользователь Sergei Sokov 
>> написал:
>>>
>>> без self такая ошибка
>>>
>>> 'OrderForm' object has no attribute 'user'
>>>
>>>
>>> среда, 29 апреля 2020 г., 17:56:10 UTC+2 пользователь hend hend 
>>> написал:

 Если 'user'  в классе не нужен, можно не вешать его на self. просто 
 вместо 'self.user' используем 'user': в этом случае 'user' просто 
 локальная 
 переменная метода init.
 def __init__(self, *args, **kwargs):
 # get 'user' param from kwargs
 user = kwargs.pop('user', None)
 super().__init__(*args, **kwargs)
 # set 'name_job' queryset
 self.fields['name_job'].queryset = TypJob.objects.filter(
 author__id=user.id)

 среда, 29 апреля 2020 г., 17:19:41 UTC+3 пользователь Sergei Sokov 
 написал:
>
> hend hend спасибо большое!
> Работает!
> Но!
> *Теперь у меня не получается управлять внешним видом полей*
>
> Я хочу переопределить класс в форме, но "user" из представления 
> попадает в этот __init__  тоже
>
>  def __init__(self, *args, **kwargs):
>  super().__init__(*args, **kwargs)
>  #количество строк в поле комментариев
>  self.fields['comment'].widget = Textarea(attrs={'rows': 
> 3})
>  for field in self.fields:
>  self.fields[field].widget.attrs['class'] = 
> 'form-control'
>
>
> среда, 29 апреля 2020 г., 13:54:23 UTC+2 пользователь hend hend 
> написал:
>>
>>
>>
>> вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei 
>> Sokov написал:
>>>
>>> forms.py
>>> class OrderForm(forms.ModelForm):
>>> class Meta:
>>> model = Order
>>> name_job = forms.ModelMultipleChoiceField(queryset=None)
>>> def __init__(self, *args, **kwargs):
>>> super().__init__(*args, **kwargs)
>>> qs = 

Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-30 Thread Sergei Sokov
Так перестает работать первоначальная задача

четверг, 30 апреля 2020 г., 18:14:38 UTC+2 пользователь hend hend написал:
>
> Не совсем понимаю, это init какого класса...Но можно попробовать так:
> def __init__(self, *args, **kwargs):
> # delete 'user' from kwargs before calling perent init
> user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> #количество строк в поле комментариев
> self.fields['comment'].widget = Textarea(attrs={'rows': 3})
> for field in self.fields:
> self.fields[field].widget.attrs['class'] = 'form-control'
>
>
> четверг, 30 апреля 2020 г., 15:46:43 UTC+3 пользователь Sergei Sokov 
> написал:
>>
>> так работает, но если я добавляю вот это для редактирования отображения 
>> полей в форме
>> def __init__(self, *args, **kwargs):
>> super().__init__(*args, **kwargs)
>> #количество строк в поле комментариев
>> self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>> for field in self.fields:
>> self.fields[field].widget.attrs['class'] = 'form-control'
>> тогда у меня вот такая ошибка
>> TypeError at /new-big-print-order
>>
>> __init__() got an unexpected keyword argument 'user'
>>
>>
>> Я так понимаю потому что во views.py вот это
>>
>> def get_form_kwargs(self):
>> kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
>> kwargs['user'] = self.request.user
>> return kwargs
>>
>>
>>
>> четверг, 30 апреля 2020 г., 12:19:35 UTC+2 пользователь hend hend написал:
>>>
>>> Уже приводил вариант без self, хотя и с self должно бы работать 
>>> нормально, но раз ругается попробуйте без self.
>>> def __init__(self, *args, **kwargs):
>>> # get 'user' param from kwargs
>>> # user without self
>>> user = kwargs.pop('user', None)
>>> super().__init__(*args, **kwargs)
>>> # set 'name_job' queryset
>>> # user.id without self
>>> self.fields['name_job'].queryset = TypJob.objects.filter(
>>> author__id=user.id)
>>>
>>>
>>> четверг, 30 апреля 2020 г., 11:34:28 UTC+3 пользователь Sergei Sokov 
>>> написал:

 А как тогда?
 self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
 self.user.id)
 как тогда фильтр будет работать?

 среда, 29 апреля 2020 г., 20:36:00 UTC+2 пользователь hend hend написал:
>
> *Не нужно нигде  в классе формы обращаться к  'self.user'.  *
>
> среда, 29 апреля 2020 г., 19:49:45 UTC+3 пользователь Sergei Sokov 
> написал:
>>
>> без self такая ошибка
>>
>> 'OrderForm' object has no attribute 'user'
>>
>>
>> среда, 29 апреля 2020 г., 17:56:10 UTC+2 пользователь hend hend 
>> написал:
>>>
>>> Если 'user'  в классе не нужен, можно не вешать его на self. просто 
>>> вместо 'self.user' используем 'user': в этом случае 'user' просто 
>>> локальная 
>>> переменная метода init.
>>> def __init__(self, *args, **kwargs):
>>> # get 'user' param from kwargs
>>> user = kwargs.pop('user', None)
>>> super().__init__(*args, **kwargs)
>>> # set 'name_job' queryset
>>> self.fields['name_job'].queryset = TypJob.objects.filter(
>>> author__id=user.id)
>>>
>>> среда, 29 апреля 2020 г., 17:19:41 UTC+3 пользователь Sergei Sokov 
>>> написал:

 hend hend спасибо большое!
 Работает!
 Но!
 *Теперь у меня не получается управлять внешним видом полей*

 Я хочу переопределить класс в форме, но "user" из представления 
 попадает в этот __init__  тоже

  def __init__(self, *args, **kwargs):
  super().__init__(*args, **kwargs)
  #количество строк в поле комментариев
  self.fields['comment'].widget = Textarea(attrs={'rows': 3})
  for field in self.fields:
  self.fields[field].widget.attrs['class'] = 
 'form-control'


 среда, 29 апреля 2020 г., 13:54:23 UTC+2 пользователь hend hend 
 написал:
>
>
>
> вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei 
> Sokov написал:
>>
>> forms.py
>> class OrderForm(forms.ModelForm):
>> class Meta:
>> model = Order
>> name_job = forms.ModelMultipleChoiceField(queryset=None)
>> def __init__(self, *args, **kwargs):
>> super().__init__(*args, **kwargs)
>> qs = TypJob.objects.filter(author__id=request.user.id)
>>
>> views.py
>> class OrderNewBigPrintView(LoginRequiredMixin, 
>> CustomSuccessMessageMixin, CreateView):
>> model = Order
>> template_name = 'new_order_bp.html'
>> form_class = OrderForm
>> success_url = reverse_lazy('orders')
>>

Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-30 Thread hend hend
Не совсем понимаю, это init какого класса...Но можно попробовать так:
def __init__(self, *args, **kwargs):
# delete 'user' from kwargs before calling perent init
user = kwargs.pop('user', None)
super().__init__(*args, **kwargs)
#количество строк в поле комментариев
self.fields['comment'].widget = Textarea(attrs={'rows': 3})
for field in self.fields:
self.fields[field].widget.attrs['class'] = 'form-control'


четверг, 30 апреля 2020 г., 15:46:43 UTC+3 пользователь Sergei Sokov 
написал:
>
> так работает, но если я добавляю вот это для редактирования отображения 
> полей в форме
> def __init__(self, *args, **kwargs):
> super().__init__(*args, **kwargs)
> #количество строк в поле комментариев
> self.fields['comment'].widget = Textarea(attrs={'rows': 3})
> for field in self.fields:
> self.fields[field].widget.attrs['class'] = 'form-control'
> тогда у меня вот такая ошибка
> TypeError at /new-big-print-order
>
> __init__() got an unexpected keyword argument 'user'
>
>
> Я так понимаю потому что во views.py вот это
>
> def get_form_kwargs(self):
> kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
> kwargs['user'] = self.request.user
> return kwargs
>
>
>
> четверг, 30 апреля 2020 г., 12:19:35 UTC+2 пользователь hend hend написал:
>>
>> Уже приводил вариант без self, хотя и с self должно бы работать 
>> нормально, но раз ругается попробуйте без self.
>> def __init__(self, *args, **kwargs):
>> # get 'user' param from kwargs
>> # user without self
>> user = kwargs.pop('user', None)
>> super().__init__(*args, **kwargs)
>> # set 'name_job' queryset
>> # user.id without self
>> self.fields['name_job'].queryset = TypJob.objects.filter(
>> author__id=user.id)
>>
>>
>> четверг, 30 апреля 2020 г., 11:34:28 UTC+3 пользователь Sergei Sokov 
>> написал:
>>>
>>> А как тогда?
>>> self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
>>> self.user.id)
>>> как тогда фильтр будет работать?
>>>
>>> среда, 29 апреля 2020 г., 20:36:00 UTC+2 пользователь hend hend написал:

 *Не нужно нигде  в классе формы обращаться к  'self.user'.  *

 среда, 29 апреля 2020 г., 19:49:45 UTC+3 пользователь Sergei Sokov 
 написал:
>
> без self такая ошибка
>
> 'OrderForm' object has no attribute 'user'
>
>
> среда, 29 апреля 2020 г., 17:56:10 UTC+2 пользователь hend hend 
> написал:
>>
>> Если 'user'  в классе не нужен, можно не вешать его на self. просто 
>> вместо 'self.user' используем 'user': в этом случае 'user' просто 
>> локальная 
>> переменная метода init.
>> def __init__(self, *args, **kwargs):
>> # get 'user' param from kwargs
>> user = kwargs.pop('user', None)
>> super().__init__(*args, **kwargs)
>> # set 'name_job' queryset
>> self.fields['name_job'].queryset = TypJob.objects.filter(
>> author__id=user.id)
>>
>> среда, 29 апреля 2020 г., 17:19:41 UTC+3 пользователь Sergei Sokov 
>> написал:
>>>
>>> hend hend спасибо большое!
>>> Работает!
>>> Но!
>>> *Теперь у меня не получается управлять внешним видом полей*
>>>
>>> Я хочу переопределить класс в форме, но "user" из представления 
>>> попадает в этот __init__  тоже
>>>
>>>  def __init__(self, *args, **kwargs):
>>>  super().__init__(*args, **kwargs)
>>>  #количество строк в поле комментариев
>>>  self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>>>  for field in self.fields:
>>>  self.fields[field].widget.attrs['class'] = 
>>> 'form-control'
>>>
>>>
>>> среда, 29 апреля 2020 г., 13:54:23 UTC+2 пользователь hend hend 
>>> написал:



 вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei 
 Sokov написал:
>
> forms.py
> class OrderForm(forms.ModelForm):
> class Meta:
> model = Order
> name_job = forms.ModelMultipleChoiceField(queryset=None)
> def __init__(self, *args, **kwargs):
> super().__init__(*args, **kwargs)
> qs = TypJob.objects.filter(author__id=request.user.id)
>
> views.py
> class OrderNewBigPrintView(LoginRequiredMixin, 
> CustomSuccessMessageMixin, CreateView):
> model = Order
> template_name = 'new_order_bp.html'
> form_class = OrderForm
> success_url = reverse_lazy('orders')
> success_msg = 'Ok'
>
  

>
> models.py
> class TypJob(models.Model):
>  author = models.ForeignKey(User, on_delete = models.CASCADE, 
> verbose_name='author', null=True)
>  name_job = 

Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-30 Thread Sergei Sokov
так работает, но если я добавляю вот это для редактирования отображения 
полей в форме
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
#количество строк в поле комментариев
self.fields['comment'].widget = Textarea(attrs={'rows': 3})
for field in self.fields:
self.fields[field].widget.attrs['class'] = 'form-control'
тогда у меня вот такая ошибка
TypeError at /new-big-print-order

__init__() got an unexpected keyword argument 'user'


Я так понимаю потому что во views.py вот это

def get_form_kwargs(self):
kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs



четверг, 30 апреля 2020 г., 12:19:35 UTC+2 пользователь hend hend написал:
>
> Уже приводил вариант без self, хотя и с self должно бы работать нормально, 
> но раз ругается попробуйте без self.
> def __init__(self, *args, **kwargs):
> # get 'user' param from kwargs
> # user without self
> user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> # set 'name_job' queryset
> # user.id without self
> self.fields['name_job'].queryset = TypJob.objects.filter(
> author__id=user.id)
>
>
> четверг, 30 апреля 2020 г., 11:34:28 UTC+3 пользователь Sergei Sokov 
> написал:
>>
>> А как тогда?
>> self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
>> self.user.id)
>> как тогда фильтр будет работать?
>>
>> среда, 29 апреля 2020 г., 20:36:00 UTC+2 пользователь hend hend написал:
>>>
>>> *Не нужно нигде  в классе формы обращаться к  'self.user'.  *
>>>
>>> среда, 29 апреля 2020 г., 19:49:45 UTC+3 пользователь Sergei Sokov 
>>> написал:

 без self такая ошибка

 'OrderForm' object has no attribute 'user'


 среда, 29 апреля 2020 г., 17:56:10 UTC+2 пользователь hend hend написал:
>
> Если 'user'  в классе не нужен, можно не вешать его на self. просто 
> вместо 'self.user' используем 'user': в этом случае 'user' просто 
> локальная 
> переменная метода init.
> def __init__(self, *args, **kwargs):
> # get 'user' param from kwargs
> user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> # set 'name_job' queryset
> self.fields['name_job'].queryset = TypJob.objects.filter(
> author__id=user.id)
>
> среда, 29 апреля 2020 г., 17:19:41 UTC+3 пользователь Sergei Sokov 
> написал:
>>
>> hend hend спасибо большое!
>> Работает!
>> Но!
>> *Теперь у меня не получается управлять внешним видом полей*
>>
>> Я хочу переопределить класс в форме, но "user" из представления 
>> попадает в этот __init__  тоже
>>
>>  def __init__(self, *args, **kwargs):
>>  super().__init__(*args, **kwargs)
>>  #количество строк в поле комментариев
>>  self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>>  for field in self.fields:
>>  self.fields[field].widget.attrs['class'] = 'form-control'
>>
>>
>> среда, 29 апреля 2020 г., 13:54:23 UTC+2 пользователь hend hend 
>> написал:
>>>
>>>
>>>
>>> вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei Sokov 
>>> написал:

 forms.py
 class OrderForm(forms.ModelForm):
 class Meta:
 model = Order
 name_job = forms.ModelMultipleChoiceField(queryset=None)
 def __init__(self, *args, **kwargs):
 super().__init__(*args, **kwargs)
 qs = TypJob.objects.filter(author__id=request.user.id)

 views.py
 class OrderNewBigPrintView(LoginRequiredMixin, 
 CustomSuccessMessageMixin, CreateView):
 model = Order
 template_name = 'new_order_bp.html'
 form_class = OrderForm
 success_url = reverse_lazy('orders')
 success_msg = 'Ok'

>>>  
>>>

 models.py
 class TypJob(models.Model):
  author = models.ForeignKey(User, on_delete = models.CASCADE, 
 verbose_name='author', null=True)
  name_job = models.CharField('name job', max_length=200)


 class Order(models.Model):
  author = models.ForeignKey(User, on_delete = models.CASCADE, 
 verbose_name='author', blank=True, null=True)
  number_order = models.CharField('number of order', max_length=100)
  date_create = models.DateTimeField(auto_now=True)
  name = models.ForeignKey(Customer, on_delete = models.CASCADE, 
 verbose_name='customer', null=True)
  name_order = models.CharField('name of order', max_length=200)

 # Так должно работать вроде.. 
>>>
 # view

>>>  class OrderNewBigPrintView(LoginRequiredMixin, 
>>> 

Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-30 Thread hend hend
Уже приводил вариант без self, хотя и с self должно бы работать нормально, 
но раз ругается попробуйте без self.
def __init__(self, *args, **kwargs):
# get 'user' param from kwargs
# user without self
user = kwargs.pop('user', None)
super().__init__(*args, **kwargs)
# set 'name_job' queryset
# user.id without self
self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
user.id)


четверг, 30 апреля 2020 г., 11:34:28 UTC+3 пользователь Sergei Sokov 
написал:
>
> А как тогда?
> self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
> self.user.id)
> как тогда фильтр будет работать?
>
> среда, 29 апреля 2020 г., 20:36:00 UTC+2 пользователь hend hend написал:
>>
>> *Не нужно нигде  в классе формы обращаться к  'self.user'.  *
>>
>> среда, 29 апреля 2020 г., 19:49:45 UTC+3 пользователь Sergei Sokov 
>> написал:
>>>
>>> без self такая ошибка
>>>
>>> 'OrderForm' object has no attribute 'user'
>>>
>>>
>>> среда, 29 апреля 2020 г., 17:56:10 UTC+2 пользователь hend hend написал:

 Если 'user'  в классе не нужен, можно не вешать его на self. просто 
 вместо 'self.user' используем 'user': в этом случае 'user' просто 
 локальная 
 переменная метода init.
 def __init__(self, *args, **kwargs):
 # get 'user' param from kwargs
 user = kwargs.pop('user', None)
 super().__init__(*args, **kwargs)
 # set 'name_job' queryset
 self.fields['name_job'].queryset = TypJob.objects.filter(
 author__id=user.id)

 среда, 29 апреля 2020 г., 17:19:41 UTC+3 пользователь Sergei Sokov 
 написал:
>
> hend hend спасибо большое!
> Работает!
> Но!
> *Теперь у меня не получается управлять внешним видом полей*
>
> Я хочу переопределить класс в форме, но "user" из представления 
> попадает в этот __init__  тоже
>
>  def __init__(self, *args, **kwargs):
>  super().__init__(*args, **kwargs)
>  #количество строк в поле комментариев
>  self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>  for field in self.fields:
>  self.fields[field].widget.attrs['class'] = 'form-control'
>
>
> среда, 29 апреля 2020 г., 13:54:23 UTC+2 пользователь hend hend 
> написал:
>>
>>
>>
>> вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei Sokov 
>> написал:
>>>
>>> forms.py
>>> class OrderForm(forms.ModelForm):
>>> class Meta:
>>> model = Order
>>> name_job = forms.ModelMultipleChoiceField(queryset=None)
>>> def __init__(self, *args, **kwargs):
>>> super().__init__(*args, **kwargs)
>>> qs = TypJob.objects.filter(author__id=request.user.id)
>>>
>>> views.py
>>> class OrderNewBigPrintView(LoginRequiredMixin, 
>>> CustomSuccessMessageMixin, CreateView):
>>> model = Order
>>> template_name = 'new_order_bp.html'
>>> form_class = OrderForm
>>> success_url = reverse_lazy('orders')
>>> success_msg = 'Ok'
>>>
>>  
>>
>>>
>>> models.py
>>> class TypJob(models.Model):
>>>  author = models.ForeignKey(User, on_delete = models.CASCADE, 
>>> verbose_name='author', null=True)
>>>  name_job = models.CharField('name job', max_length=200)
>>>
>>>
>>> class Order(models.Model):
>>>  author = models.ForeignKey(User, on_delete = models.CASCADE, 
>>> verbose_name='author', blank=True, null=True)
>>>  number_order = models.CharField('number of order', max_length=100)
>>>  date_create = models.DateTimeField(auto_now=True)
>>>  name = models.ForeignKey(Customer, on_delete = models.CASCADE, 
>>> verbose_name='customer', null=True)
>>>  name_order = models.CharField('name of order', max_length=200)
>>>
>>> # Так должно работать вроде.. 
>>
>>> # view
>>>
>>  class OrderNewBigPrintView(LoginRequiredMixin, 
>> CustomSuccessMessageMixin, CreateView):
>> model = Order
>> template_name = 'new_order_bp.html'
>> form_class = OrderForm
>> success_url = reverse_lazy('orders')
>> success_msg = 'Ok'
>>
>> # this method will pass 'user' as param in kwargs to form 
>> __init__()
>> def get_form_kwargs(self):
>> kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
>> kwargs['user'] =  self.request.user
>> return kwargs
>>
>> # form
>> class OrderForm(forms.ModelForm):
>> class Meta:
>> model = Order
>> name_job = forms.ModelMultipleChoiceField(queryset=None)
>>
>> def __init__(self, *args, **kwargs):
>> # get 'user' param from kwargs
>> self.user = kwargs.pop('user', None)
>> super().__init__(*args, **kwargs)
>> # set 'name_job' 

Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-30 Thread Sergei Sokov
А как тогда?
self.fields['name_job'].queryset = 
TypJob.objects.filter(author__id=self.user.id)
как тогда фильтр будет работать?

среда, 29 апреля 2020 г., 20:36:00 UTC+2 пользователь hend hend написал:
>
> *Не нужно нигде  в классе формы обращаться к  'self.user'.  *
>
> среда, 29 апреля 2020 г., 19:49:45 UTC+3 пользователь Sergei Sokov написал:
>>
>> без self такая ошибка
>>
>> 'OrderForm' object has no attribute 'user'
>>
>>
>> среда, 29 апреля 2020 г., 17:56:10 UTC+2 пользователь hend hend написал:
>>>
>>> Если 'user'  в классе не нужен, можно не вешать его на self. просто 
>>> вместо 'self.user' используем 'user': в этом случае 'user' просто локальная 
>>> переменная метода init.
>>> def __init__(self, *args, **kwargs):
>>> # get 'user' param from kwargs
>>> user = kwargs.pop('user', None)
>>> super().__init__(*args, **kwargs)
>>> # set 'name_job' queryset
>>> self.fields['name_job'].queryset = TypJob.objects.filter(
>>> author__id=user.id)
>>>
>>> среда, 29 апреля 2020 г., 17:19:41 UTC+3 пользователь Sergei Sokov 
>>> написал:

 hend hend спасибо большое!
 Работает!
 Но!
 *Теперь у меня не получается управлять внешним видом полей*

 Я хочу переопределить класс в форме, но "user" из представления 
 попадает в этот __init__  тоже

  def __init__(self, *args, **kwargs):
  super().__init__(*args, **kwargs)
  #количество строк в поле комментариев
  self.fields['comment'].widget = Textarea(attrs={'rows': 3})
  for field in self.fields:
  self.fields[field].widget.attrs['class'] = 'form-control'


 среда, 29 апреля 2020 г., 13:54:23 UTC+2 пользователь hend hend написал:
>
>
>
> вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei Sokov 
> написал:
>>
>> forms.py
>> class OrderForm(forms.ModelForm):
>> class Meta:
>> model = Order
>> name_job = forms.ModelMultipleChoiceField(queryset=None)
>> def __init__(self, *args, **kwargs):
>> super().__init__(*args, **kwargs)
>> qs = TypJob.objects.filter(author__id=request.user.id)
>>
>> views.py
>> class OrderNewBigPrintView(LoginRequiredMixin, 
>> CustomSuccessMessageMixin, CreateView):
>> model = Order
>> template_name = 'new_order_bp.html'
>> form_class = OrderForm
>> success_url = reverse_lazy('orders')
>> success_msg = 'Ok'
>>
>  
>
>>
>> models.py
>> class TypJob(models.Model):
>>  author = models.ForeignKey(User, on_delete = models.CASCADE, 
>> verbose_name='author', null=True)
>>  name_job = models.CharField('name job', max_length=200)
>>
>>
>> class Order(models.Model):
>>  author = models.ForeignKey(User, on_delete = models.CASCADE, 
>> verbose_name='author', blank=True, null=True)
>>  number_order = models.CharField('number of order', max_length=100)
>>  date_create = models.DateTimeField(auto_now=True)
>>  name = models.ForeignKey(Customer, on_delete = models.CASCADE, 
>> verbose_name='customer', null=True)
>>  name_order = models.CharField('name of order', max_length=200)
>>
>> # Так должно работать вроде.. 
>
>> # view
>>
>  class OrderNewBigPrintView(LoginRequiredMixin, 
> CustomSuccessMessageMixin, CreateView):
> model = Order
> template_name = 'new_order_bp.html'
> form_class = OrderForm
> success_url = reverse_lazy('orders')
> success_msg = 'Ok'
>
> # this method will pass 'user' as param in kwargs to form 
> __init__()
> def get_form_kwargs(self):
> kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
> kwargs['user'] =  self.request.user
> return kwargs
>
> # form
> class OrderForm(forms.ModelForm):
> class Meta:
> model = Order
> name_job = forms.ModelMultipleChoiceField(queryset=None)
>
> def __init__(self, *args, **kwargs):
> # get 'user' param from kwargs
> self.user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> # set 'name_job' queryset
> self.fields['name_job'].queryset = TypJob.objects.filter(
> author__id=self.user.id)
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/9f4edaa1-e8ba-43ee-b180-bd4b192cfe4c%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-29 Thread hend hend
*Не нужно нигде  в классе формы обращаться к  'self.user'.  *

среда, 29 апреля 2020 г., 19:49:45 UTC+3 пользователь Sergei Sokov написал:
>
> без self такая ошибка
>
> 'OrderForm' object has no attribute 'user'
>
>
> среда, 29 апреля 2020 г., 17:56:10 UTC+2 пользователь hend hend написал:
>>
>> Если 'user'  в классе не нужен, можно не вешать его на self. просто 
>> вместо 'self.user' используем 'user': в этом случае 'user' просто локальная 
>> переменная метода init.
>> def __init__(self, *args, **kwargs):
>> # get 'user' param from kwargs
>> user = kwargs.pop('user', None)
>> super().__init__(*args, **kwargs)
>> # set 'name_job' queryset
>> self.fields['name_job'].queryset = TypJob.objects.filter(
>> author__id=user.id)
>>
>> среда, 29 апреля 2020 г., 17:19:41 UTC+3 пользователь Sergei Sokov 
>> написал:
>>>
>>> hend hend спасибо большое!
>>> Работает!
>>> Но!
>>> *Теперь у меня не получается управлять внешним видом полей*
>>>
>>> Я хочу переопределить класс в форме, но "user" из представления попадает 
>>> в этот __init__  тоже
>>>
>>>  def __init__(self, *args, **kwargs):
>>>  super().__init__(*args, **kwargs)
>>>  #количество строк в поле комментариев
>>>  self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>>>  for field in self.fields:
>>>  self.fields[field].widget.attrs['class'] = 'form-control'
>>>
>>>
>>> среда, 29 апреля 2020 г., 13:54:23 UTC+2 пользователь hend hend написал:



 вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei Sokov 
 написал:
>
> forms.py
> class OrderForm(forms.ModelForm):
> class Meta:
> model = Order
> name_job = forms.ModelMultipleChoiceField(queryset=None)
> def __init__(self, *args, **kwargs):
> super().__init__(*args, **kwargs)
> qs = TypJob.objects.filter(author__id=request.user.id)
>
> views.py
> class OrderNewBigPrintView(LoginRequiredMixin, 
> CustomSuccessMessageMixin, CreateView):
> model = Order
> template_name = 'new_order_bp.html'
> form_class = OrderForm
> success_url = reverse_lazy('orders')
> success_msg = 'Ok'
>
  

>
> models.py
> class TypJob(models.Model):
>  author = models.ForeignKey(User, on_delete = models.CASCADE, 
> verbose_name='author', null=True)
>  name_job = models.CharField('name job', max_length=200)
>
>
> class Order(models.Model):
>  author = models.ForeignKey(User, on_delete = models.CASCADE, 
> verbose_name='author', blank=True, null=True)
>  number_order = models.CharField('number of order', max_length=100)
>  date_create = models.DateTimeField(auto_now=True)
>  name = models.ForeignKey(Customer, on_delete = models.CASCADE, 
> verbose_name='customer', null=True)
>  name_order = models.CharField('name of order', max_length=200)
>
> # Так должно работать вроде.. 

> # view
>
  class OrderNewBigPrintView(LoginRequiredMixin, 
 CustomSuccessMessageMixin, CreateView):
 model = Order
 template_name = 'new_order_bp.html'
 form_class = OrderForm
 success_url = reverse_lazy('orders')
 success_msg = 'Ok'

 # this method will pass 'user' as param in kwargs to form __init__()
 def get_form_kwargs(self):
 kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
 kwargs['user'] =  self.request.user
 return kwargs

 # form
 class OrderForm(forms.ModelForm):
 class Meta:
 model = Order
 name_job = forms.ModelMultipleChoiceField(queryset=None)

 def __init__(self, *args, **kwargs):
 # get 'user' param from kwargs
 self.user = kwargs.pop('user', None)
 super().__init__(*args, **kwargs)
 # set 'name_job' queryset
 self.fields['name_job'].queryset = TypJob.objects.filter(
 author__id=self.user.id)



-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/3faf9565-4cf5-4d84-857a-934f4850ec0c%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-29 Thread Sergei Sokov
без self такая ошибка

'OrderForm' object has no attribute 'user'


среда, 29 апреля 2020 г., 17:56:10 UTC+2 пользователь hend hend написал:
>
> Если 'user'  в классе не нужен, можно не вешать его на self. просто вместо 
> 'self.user' используем 'user': в этом случае 'user' просто локальная 
> переменная метода init.
> def __init__(self, *args, **kwargs):
> # get 'user' param from kwargs
> user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> # set 'name_job' queryset
> self.fields['name_job'].queryset = TypJob.objects.filter(
> author__id=user.id)
>
> среда, 29 апреля 2020 г., 17:19:41 UTC+3 пользователь Sergei Sokov написал:
>>
>> hend hend спасибо большое!
>> Работает!
>> Но!
>> *Теперь у меня не получается управлять внешним видом полей*
>>
>> Я хочу переопределить класс в форме, но "user" из представления попадает 
>> в этот __init__  тоже
>>
>>  def __init__(self, *args, **kwargs):
>>  super().__init__(*args, **kwargs)
>>  #количество строк в поле комментариев
>>  self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>>  for field in self.fields:
>>  self.fields[field].widget.attrs['class'] = 'form-control'
>>
>>
>> среда, 29 апреля 2020 г., 13:54:23 UTC+2 пользователь hend hend написал:
>>>
>>>
>>>
>>> вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei Sokov 
>>> написал:

 forms.py
 class OrderForm(forms.ModelForm):
 class Meta:
 model = Order
 name_job = forms.ModelMultipleChoiceField(queryset=None)
 def __init__(self, *args, **kwargs):
 super().__init__(*args, **kwargs)
 qs = TypJob.objects.filter(author__id=request.user.id)

 views.py
 class OrderNewBigPrintView(LoginRequiredMixin, 
 CustomSuccessMessageMixin, CreateView):
 model = Order
 template_name = 'new_order_bp.html'
 form_class = OrderForm
 success_url = reverse_lazy('orders')
 success_msg = 'Ok'

>>>  
>>>

 models.py
 class TypJob(models.Model):
  author = models.ForeignKey(User, on_delete = models.CASCADE, 
 verbose_name='author', null=True)
  name_job = models.CharField('name job', max_length=200)


 class Order(models.Model):
  author = models.ForeignKey(User, on_delete = models.CASCADE, 
 verbose_name='author', blank=True, null=True)
  number_order = models.CharField('number of order', max_length=100)
  date_create = models.DateTimeField(auto_now=True)
  name = models.ForeignKey(Customer, on_delete = models.CASCADE, 
 verbose_name='customer', null=True)
  name_order = models.CharField('name of order', max_length=200)

 # Так должно работать вроде.. 
>>>
 # view

>>>  class OrderNewBigPrintView(LoginRequiredMixin, 
>>> CustomSuccessMessageMixin, CreateView):
>>> model = Order
>>> template_name = 'new_order_bp.html'
>>> form_class = OrderForm
>>> success_url = reverse_lazy('orders')
>>> success_msg = 'Ok'
>>>
>>> # this method will pass 'user' as param in kwargs to form __init__()
>>> def get_form_kwargs(self):
>>> kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
>>> kwargs['user'] =  self.request.user
>>> return kwargs
>>>
>>> # form
>>> class OrderForm(forms.ModelForm):
>>> class Meta:
>>> model = Order
>>> name_job = forms.ModelMultipleChoiceField(queryset=None)
>>>
>>> def __init__(self, *args, **kwargs):
>>> # get 'user' param from kwargs
>>> self.user = kwargs.pop('user', None)
>>> super().__init__(*args, **kwargs)
>>> # set 'name_job' queryset
>>> self.fields['name_job'].queryset = TypJob.objects.filter(
>>> author__id=self.user.id)
>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/42c3b7dc-cbb9-4643-b57d-78299ec1b1a7%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-29 Thread hend hend
Если 'user'  в классе не нужен, можно не вешать его на self. просто вместо 
'self.user' используем 'user': в этом случае 'user' просто локальная 
переменная метода init.
def __init__(self, *args, **kwargs):
# get 'user' param from kwargs
user = kwargs.pop('user', None)
super().__init__(*args, **kwargs)
# set 'name_job' queryset
self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
user.id)

среда, 29 апреля 2020 г., 17:19:41 UTC+3 пользователь Sergei Sokov написал:
>
> hend hend спасибо большое!
> Работает!
> Но!
> *Теперь у меня не получается управлять внешним видом полей*
>
> Я хочу переопределить класс в форме, но "user" из представления попадает в 
> этот __init__  тоже
>
>  def __init__(self, *args, **kwargs):
>  super().__init__(*args, **kwargs)
>  #количество строк в поле комментариев
>  self.fields['comment'].widget = Textarea(attrs={'rows': 3})
>  for field in self.fields:
>  self.fields[field].widget.attrs['class'] = 'form-control'
>
>
> среда, 29 апреля 2020 г., 13:54:23 UTC+2 пользователь hend hend написал:
>>
>>
>>
>> вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei Sokov 
>> написал:
>>>
>>> forms.py
>>> class OrderForm(forms.ModelForm):
>>> class Meta:
>>> model = Order
>>> name_job = forms.ModelMultipleChoiceField(queryset=None)
>>> def __init__(self, *args, **kwargs):
>>> super().__init__(*args, **kwargs)
>>> qs = TypJob.objects.filter(author__id=request.user.id)
>>>
>>> views.py
>>> class OrderNewBigPrintView(LoginRequiredMixin, CustomSuccessMessageMixin
>>> , CreateView):
>>> model = Order
>>> template_name = 'new_order_bp.html'
>>> form_class = OrderForm
>>> success_url = reverse_lazy('orders')
>>> success_msg = 'Ok'
>>>
>>  
>>
>>>
>>> models.py
>>> class TypJob(models.Model):
>>>  author = models.ForeignKey(User, on_delete = models.CASCADE, 
>>> verbose_name='author', null=True)
>>>  name_job = models.CharField('name job', max_length=200)
>>>
>>>
>>> class Order(models.Model):
>>>  author = models.ForeignKey(User, on_delete = models.CASCADE, 
>>> verbose_name='author', blank=True, null=True)
>>>  number_order = models.CharField('number of order', max_length=100)
>>>  date_create = models.DateTimeField(auto_now=True)
>>>  name = models.ForeignKey(Customer, on_delete = models.CASCADE, 
>>> verbose_name='customer', null=True)
>>>  name_order = models.CharField('name of order', max_length=200)
>>>
>>> # Так должно работать вроде.. 
>>
>>> # view
>>>
>>  class OrderNewBigPrintView(LoginRequiredMixin, CustomSuccessMessageMixin
>> , CreateView):
>> model = Order
>> template_name = 'new_order_bp.html'
>> form_class = OrderForm
>> success_url = reverse_lazy('orders')
>> success_msg = 'Ok'
>>
>> # this method will pass 'user' as param in kwargs to form __init__()
>> def get_form_kwargs(self):
>> kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
>> kwargs['user'] =  self.request.user
>> return kwargs
>>
>> # form
>> class OrderForm(forms.ModelForm):
>> class Meta:
>> model = Order
>> name_job = forms.ModelMultipleChoiceField(queryset=None)
>>
>> def __init__(self, *args, **kwargs):
>> # get 'user' param from kwargs
>> self.user = kwargs.pop('user', None)
>> super().__init__(*args, **kwargs)
>> # set 'name_job' queryset
>> self.fields['name_job'].queryset = TypJob.objects.filter(
>> author__id=self.user.id)
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/178dd956-ab44-4f35-9d81-6d74ed1e42fa%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-29 Thread Sergei Sokov
hend hend спасибо большое!
Работает!
Но!
*Теперь у меня не получается управлять внешним видом полей*

Я хочу переопределить класс в форме, но "user" из представления попадает в 
этот __init__  тоже

 def __init__(self, *args, **kwargs):
 super().__init__(*args, **kwargs)
 #количество строк в поле комментариев
 self.fields['comment'].widget = Textarea(attrs={'rows': 3})
 for field in self.fields:
 self.fields[field].widget.attrs['class'] = 'form-control'


среда, 29 апреля 2020 г., 13:54:23 UTC+2 пользователь hend hend написал:
>
>
>
> вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei Sokov 
> написал:
>>
>> forms.py
>> class OrderForm(forms.ModelForm):
>> class Meta:
>> model = Order
>> name_job = forms.ModelMultipleChoiceField(queryset=None)
>> def __init__(self, *args, **kwargs):
>> super().__init__(*args, **kwargs)
>> qs = TypJob.objects.filter(author__id=request.user.id)
>>
>> views.py
>> class OrderNewBigPrintView(LoginRequiredMixin, CustomSuccessMessageMixin, 
>> CreateView):
>> model = Order
>> template_name = 'new_order_bp.html'
>> form_class = OrderForm
>> success_url = reverse_lazy('orders')
>> success_msg = 'Ok'
>>
>  
>
>>
>> models.py
>> class TypJob(models.Model):
>>  author = models.ForeignKey(User, on_delete = models.CASCADE, 
>> verbose_name='author', null=True)
>>  name_job = models.CharField('name job', max_length=200)
>>
>>
>> class Order(models.Model):
>>  author = models.ForeignKey(User, on_delete = models.CASCADE, 
>> verbose_name='author', blank=True, null=True)
>>  number_order = models.CharField('number of order', max_length=100)
>>  date_create = models.DateTimeField(auto_now=True)
>>  name = models.ForeignKey(Customer, on_delete = models.CASCADE, 
>> verbose_name='customer', null=True)
>>  name_order = models.CharField('name of order', max_length=200)
>>
>> # Так должно работать вроде.. 
>
>> # view
>>
>  class OrderNewBigPrintView(LoginRequiredMixin, CustomSuccessMessageMixin,
>  CreateView):
> model = Order
> template_name = 'new_order_bp.html'
> form_class = OrderForm
> success_url = reverse_lazy('orders')
> success_msg = 'Ok'
>
> # this method will pass 'user' as param in kwargs to form __init__()
> def get_form_kwargs(self):
> kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
> kwargs['user'] =  self.request.user
> return kwargs
>
> # form
> class OrderForm(forms.ModelForm):
> class Meta:
> model = Order
> name_job = forms.ModelMultipleChoiceField(queryset=None)
>
> def __init__(self, *args, **kwargs):
> # get 'user' param from kwargs
> self.user = kwargs.pop('user', None)
> super().__init__(*args, **kwargs)
> # set 'name_job' queryset
> self.fields['name_job'].queryset = TypJob.objects.filter(
> author__id=self.user.id)
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/79c1b55d-caaa-4a43-8ce7-f4b60eeaa3f6%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-29 Thread hend hend


вторник, 28 апреля 2020 г., 19:56:37 UTC+3 пользователь Sergei Sokov 
написал:
>
> forms.py
> class OrderForm(forms.ModelForm):
> class Meta:
> model = Order
> name_job = forms.ModelMultipleChoiceField(queryset=None)
> def __init__(self, *args, **kwargs):
> super().__init__(*args, **kwargs)
> qs = TypJob.objects.filter(author__id=request.user.id)
>
> views.py
> class OrderNewBigPrintView(LoginRequiredMixin, CustomSuccessMessageMixin, 
> CreateView):
> model = Order
> template_name = 'new_order_bp.html'
> form_class = OrderForm
> success_url = reverse_lazy('orders')
> success_msg = 'Ok'
>
 

>
> models.py
> class TypJob(models.Model):
>  author = models.ForeignKey(User, on_delete = models.CASCADE, verbose_name
> ='author', null=True)
>  name_job = models.CharField('name job', max_length=200)
>
>
> class Order(models.Model):
>  author = models.ForeignKey(User, on_delete = models.CASCADE, verbose_name
> ='author', blank=True, null=True)
>  number_order = models.CharField('number of order', max_length=100)
>  date_create = models.DateTimeField(auto_now=True)
>  name = models.ForeignKey(Customer, on_delete = models.CASCADE, 
> verbose_name='customer', null=True)
>  name_order = models.CharField('name of order', max_length=200)
>
> # Так должно работать вроде.. 

> # view
>
 class OrderNewBigPrintView(LoginRequiredMixin, CustomSuccessMessageMixin, 
CreateView):
model = Order
template_name = 'new_order_bp.html'
form_class = OrderForm
success_url = reverse_lazy('orders')
success_msg = 'Ok'

# this method will pass 'user' as param in kwargs to form __init__()
def get_form_kwargs(self):
kwargs = super(OrderNewBigPrintView, self).get_form_kwargs()
kwargs['user'] =  self.request.user
return kwargs

# form
class OrderForm(forms.ModelForm):
class Meta:
model = Order
name_job = forms.ModelMultipleChoiceField(queryset=None)

def __init__(self, *args, **kwargs):
# get 'user' param from kwargs
self.user = kwargs.pop('user', None)
super().__init__(*args, **kwargs)
# set 'name_job' queryset
self.fields['name_job'].queryset = TypJob.objects.filter(author__id=
self.user.id)

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/55434683-40d1-4438-90f1-518079b1540a%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-29 Thread Sergei Sokov
please could you see this 

https://ru.stackoverflow.com/questions/594743/forms-modelchoicefield-%d0%9a%d0%b0%d0%ba-%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%8c-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-queryset-name-model-objects-filt

how to write this "form = KommpredForm(request.POST, user=user)"  in 
views.py?
If I have Class and form_class

среда, 29 апреля 2020 г., 9:07:41 UTC+2 пользователь hend hend написал:
>
>
>
>
>>> class OrderNewBigPrintView(LoginRequiredMixin, CustomSuccessMessageMixin
>>> , CreateView):
>>> model = Order
>>> template_name = 'new_order_bp.html'
>>> form_class = OrderForm
>>> success_url = reverse_lazy('orders')
>>> success_msg = 'Ok'
>>>
>>
>   # get_initial позволяет установить значения полей связанной 
> формы
>   def get_initial(self):
>   self.initial["name_job"] = TypJob.objects.filter(
> author__id=self.request.user.id)
>  # вернуть нужно копию объекта
>   return self.initial.copy() 
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/ead817cb-ab77-4c1c-803a-8aa4c3c7b02a%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-29 Thread Sergei Sokov
hend hend  Не работает, но и ошибку не выдает. Что-то нужно передать в 
класс формы?
It doesn't work. And it doesn't show an error (

class OrderNewBigPrintView(LoginRequiredMixin, CustomSuccessMessageMixin, 
CreateView):
model = Order
template_name = 'new_order_bp.html'
form_class = OrderForm
success_url = reverse_lazy('orders')
success_msg = 'Заказ сохранён'
def get_initial(self):
self.initial['name_job'] = TypJob.objects.filter(author__id=self.
request.user.id)
return self.initial.copy()


среда, 29 апреля 2020 г., 9:07:41 UTC+2 пользователь hend hend написал:
>
>
>
>
>>> class OrderNewBigPrintView(LoginRequiredMixin, CustomSuccessMessageMixin
>>> , CreateView):
>>> model = Order
>>> template_name = 'new_order_bp.html'
>>> form_class = OrderForm
>>> success_url = reverse_lazy('orders')
>>> success_msg = 'Ok'
>>>
>>
>   # get_initial позволяет установить значения полей связанной 
> формы
>   def get_initial(self):
>   self.initial["name_job"] = TypJob.objects.filter(
> author__id=self.request.user.id)
>  # вернуть нужно копию объекта
>   return self.initial.copy() 
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/41269b59-ac29-4f84-8f5f-80525ff98991%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-29 Thread hend hend



>> class OrderNewBigPrintView(LoginRequiredMixin, CustomSuccessMessageMixin,
>>  CreateView):
>> model = Order
>> template_name = 'new_order_bp.html'
>> form_class = OrderForm
>> success_url = reverse_lazy('orders')
>> success_msg = 'Ok'
>>
>
  # get_initial позволяет установить значения полей связанной 
формы
  def get_initial(self):
  self.initial["name_job"] = TypJob.objects.filter(
author__id=self.request.user.id)
 # вернуть нужно копию объекта
  return self.initial.copy() 

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/4e0dd931-7c34-4be8-9a1c-3a42e611894e%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-29 Thread Antje Kazimiers
no idea how you do this with a CreateView but with a simple view
function you have a request object:

https://docs.djangoproject.com/en/3.0/topics/http/views/#a-simple-view

this thread is about passing a variable into from the view function to a
form:

https://groups.google.com/forum/#!searchin/django-users/I$20think$20in$20your$20view$20modulesView()$20%7Csort:date/django-users/AtTDAn-M7_E/V7sx7piSCQAJ

Antje

On 4/28/20 6:56 PM, Sergei Sokov wrote:
> |
> forms.py
> classOrderForm(forms.ModelForm):
>     classMeta:
>         model =Order
>     name_job =forms.ModelMultipleChoiceField(queryset=None)
>     def__init__(self,*args,**kwargs):
>         super().__init__(*args,**kwargs)
>         qs =TypJob.objects.filter(author__id=request.user.id)
> |
>
> views.py
> |
> classOrderNewBigPrintView(LoginRequiredMixin,CustomSuccessMessageMixin,CreateView):
>     model =Order
>     template_name ='new_order_bp.html'
>     form_class =OrderForm
>     success_url =reverse_lazy('orders')
>     success_msg ='Ok'
> |
>
> |
> models.py
> classTypJob(models.Model):
>  author =models.ForeignKey(User,on_delete
> =models.CASCADE,verbose_name='author',null=True)
>  name_job =models.CharField('name job',max_length=200)
>
>
> classOrder(models.Model):
>  author =models.ForeignKey(User,on_delete
> =models.CASCADE,verbose_name='author',blank=True,null=True)
>  number_order =models.CharField('number of order',max_length=100)
>  date_create =models.DateTimeField(auto_now=True)
>  name =models.ForeignKey(Customer,on_delete
> =models.CASCADE,verbose_name='customer',null=True)
>  name_order =models.CharField('name of order',max_length=200)
> |
>
>
> вторник, 28 апреля 2020 г., 18:41:25 UTC+2 пользователь Antje
> Kazimiers написал:
>
> the form doesn't know the request only the view does. how does
> your view function look like?
>
> On 4/28/20 5:57 PM, Sergei Sokov wrote:
>> я не совсем понял
>>
>> |
>>     class Meta:
>>         model = Order
>>         fields = '__all__'
>>     name_job = forms.ModelMultipleChoiceField(queryset=None)
>>     def __init__(self, *args, **kwargs):
>>         super().__init__(*args, **kwargs)
>>         qs = TypJob.objects.filter(author__id=request.user.id
>> )
>>         self.fields['name_job'].queryset = qs
>> |
>>
>> I have error
>> 'NoneType' object has no attribute '_prefetch_related_lookups'
>>
>>
>> вторник, 28 апреля 2020 г., 17:19:01 UTC+2 пользователь hend hend
>> написал:
>>
>> user.id  надо брать из request объекта в
>> контроллере request.user.id . В том
>> же контроллере метод get_initial() позволяет инициализировать
>> поля формы(указанной в аттрибуте "form_class")контроллера.
>> Например:
>>     def get_initial(self):
>>             # поле category формы будет установлено в
>> результат выборки по ключу
>>             self.initial["category"] =
>> Category.objects.get(pk=self.c_id)
>>         return self.initial.copy() # 
>>
>> -- 
>> You received this message because you are subscribed to the
>> Google Groups "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it,
>> send an email to django...@googlegroups.com.
>> To view this discussion on the web visit
>> 
>> https://groups.google.com/d/msgid/django-users/12538865-4221-40e9-92bf-b8efc1ed7309%40googlegroups.com
>> 
>> .
>
> -- 
> You received this message because you are subscribed to the Google
> Groups "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to django-users+unsubscr...@googlegroups.com
> .
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/bbbdf319-812c-40e0-9ebf-235efed46a9d%40googlegroups.com
> .

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/595f75bc-0dc0-0794-1852-e8745d8e4dee%40gmail.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-28 Thread Sergei Sokov
forms.py
class OrderForm(forms.ModelForm):
class Meta:
model = Order
name_job = forms.ModelMultipleChoiceField(queryset=None)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
qs = TypJob.objects.filter(author__id=request.user.id)

views.py
class OrderNewBigPrintView(LoginRequiredMixin, CustomSuccessMessageMixin, 
CreateView):
model = Order
template_name = 'new_order_bp.html'
form_class = OrderForm
success_url = reverse_lazy('orders')
success_msg = 'Ok'

models.py
class TypJob(models.Model):
 author = models.ForeignKey(User, on_delete = models.CASCADE, verbose_name=
'author', null=True)
 name_job = models.CharField('name job', max_length=200)


class Order(models.Model):
 author = models.ForeignKey(User, on_delete = models.CASCADE, verbose_name=
'author', blank=True, null=True)
 number_order = models.CharField('number of order', max_length=100)
 date_create = models.DateTimeField(auto_now=True)
 name = models.ForeignKey(Customer, on_delete = models.CASCADE, verbose_name
='customer', null=True)
 name_order = models.CharField('name of order', max_length=200)


вторник, 28 апреля 2020 г., 18:41:25 UTC+2 пользователь Antje Kazimiers 
написал:
>
> the form doesn't know the request only the view does. how does your view 
> function look like?
> On 4/28/20 5:57 PM, Sergei Sokov wrote:
>
> я не совсем понял 
>
> class Meta:
> model = Order
> fields = '__all__'
> name_job = forms.ModelMultipleChoiceField(queryset=None)
> def __init__(self, *args, **kwargs):
> super().__init__(*args, **kwargs)
> qs = TypJob.objects.filter(author__id=request.user.id)
> self.fields['name_job'].queryset = qs
>
> I have error
>
> 'NoneType' object has no attribute '_prefetch_related_lookups'
>
>
>
> вторник, 28 апреля 2020 г., 17:19:01 UTC+2 пользователь hend hend написал: 
>>
>> user.id надо брать из request объекта в контроллере request.user.id. В 
>> том же контроллере метод get_initial() позволяет инициализировать поля 
>> формы(указанной в аттрибуте "form_class")контроллера. 
>> Например:
>> def get_initial(self):
>> # поле category формы будет установлено в результат выборки 
>> по ключу
>> self.initial["category"] = Category.objects.get(pk=self.c_id)
>> return self.initial.copy() # 
>>
>> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to django...@googlegroups.com .
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/12538865-4221-40e9-92bf-b8efc1ed7309%40googlegroups.com
>  
> 
> .
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/bbbdf319-812c-40e0-9ebf-235efed46a9d%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-28 Thread Antje Kazimiers
the form doesn't know the request only the view does. how does your view
function look like?

On 4/28/20 5:57 PM, Sergei Sokov wrote:
> я не совсем понял
>
> |
>     class Meta:
>         model = Order
>         fields = '__all__'
>     name_job = forms.ModelMultipleChoiceField(queryset=None)
>     def __init__(self, *args, **kwargs):
>         super().__init__(*args, **kwargs)
>         qs = TypJob.objects.filter(author__id=request.user.id)
>         self.fields['name_job'].queryset = qs
> |
>
> I have error
> 'NoneType' object has no attribute '_prefetch_related_lookups'
>
>
> вторник, 28 апреля 2020 г., 17:19:01 UTC+2 пользователь hend hend
> написал:
>
> user.id  надо брать из request объекта в
> контроллере request.user.id . В том же
> контроллере метод get_initial() позволяет инициализировать поля
> формы(указанной в аттрибуте "form_class")контроллера.
> Например:
>     def get_initial(self):
>             # поле category формы будет установлено в результат
> выборки по ключу
>             self.initial["category"] =
> Category.objects.get(pk=self.c_id)
>         return self.initial.copy() # 
>
> -- 
> You received this message because you are subscribed to the Google
> Groups "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to django-users+unsubscr...@googlegroups.com
> .
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/12538865-4221-40e9-92bf-b8efc1ed7309%40googlegroups.com
> .

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/376307c8-5585-36ed-58dc-f67efc7e6509%40gmail.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-28 Thread Sergei Sokov
я не совсем понял

class Meta:
model = Order
fields = '__all__'
name_job = forms.ModelMultipleChoiceField(queryset=None)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
qs = TypJob.objects.filter(author__id=request.user.id)
self.fields['name_job'].queryset = qs

I have error

'NoneType' object has no attribute '_prefetch_related_lookups'



вторник, 28 апреля 2020 г., 17:19:01 UTC+2 пользователь hend hend написал:
>
> user.id надо брать из request объекта в контроллере request.user.id. В 
> том же контроллере метод get_initial() позволяет инициализировать поля 
> формы(указанной в аттрибуте "form_class")контроллера.
> Например:
> def get_initial(self):
> # поле category формы будет установлено в результат выборки по 
> ключу
> self.initial["category"] = Category.objects.get(pk=self.c_id)
> return self.initial.copy() # 
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/12538865-4221-40e9-92bf-b8efc1ed7309%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-28 Thread hend hend
user.id надо брать из request объекта в контроллере request.user.id. В том 
же контроллере метод get_initial() позволяет инициализировать поля 
формы(указанной в аттрибуте "form_class")контроллера.
Например:
def get_initial(self):
# поле category формы будет установлено в результат выборки по 
ключу
self.initial["category"] = Category.objects.get(pk=self.c_id)
return self.initial.copy() # 

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/11c1e6b3-f30d-4040-a7bb-cbe6ad290b8e%40googlegroups.com.


Re: How to use ModelChoiceField? I whould like to filter the output from a field form.

2020-04-28 Thread Antje Kazimiers
 qs = TypJob.objects.filter(author__id=user.id)

needs to go inside of the __init__ function. you pass user = request.user
as a parameter to OrderTestForm when you instantiate it in your view and
can use it then in your init function.
Also you can only filter the id of the author if the author field is a
ForeignKey, is it?

Antje

On Tue, Apr 28, 2020 at 9:35 AM Sergei Sokov  wrote:

> I have some models classes. And some classes have bounding fields with
> another class. Each class have the field - author. I whould like that for
> each user the form bounding field shows only those data which was created
> these authors.
>
> For example:
> class “TypeJob” has field “author”.
> User Jhon created a TypJob - “Painting”.
> User Alex created a TypJob - “Cleaning”.
> Class “Order” has bounding field - “name_typ_job”
> When Jhon whould like create an order, he opens the form and click “name
> type job” field, he sees both type job: painting and cleaning.
> I whould like that he sees and could choose only “painting”. Because he is
> it author.
>
>
> I wrote that
>
> class OrderTestForm(forms.ModelForm):
> class Meta:
> model = Order
> name_job = forms.ModelChoiceField(queryset=None)
> qs = TypJob.objects.filter(author__id=user.id)
> def __init__(self, *args, **kwargs):
> super().__init__(*args, **kwargs)
> self.fields['name_job'].queryset = qs
>
> But I have
>
> name ‘user’ is not defined
>
> name ‘author__id’ is not defined
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/178dcdb1-c119-46ef-83c3-95bda19118c8%40googlegroups.com
> 
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAN6tUhmTd%3DmSr5VvbrBhXMWaOBN5eyzhwSaH_ZkW2ZcEYTiaPA%40mail.gmail.com.