I'm using django-select2 with class based view (create, update, delete view) In CreateView, i'm use form_class in view with my form. In this form i'm use widgets for selecting related objects. And i need filtering these objents by created_user (owner). How can i pass current user in my scheme to widget ModelSelect2MultipleWidget class?
forms.py:
class AccountSearchFieldMixin(object):
search_fields = [
'login__icontains',
'password__icontains',
'phone__icontains',
]
class AccountSelect2TagWidget(AccountSearchFieldMixin, ModelSelect2MultipleWidget):
model = VkAccount
queryset = VkAccount.objects.exclude(proxy__isnull=True)
def create_value(self, value):
self.get_queryset().create(name=value)
class TaskVkInvitationsFriendsSearchForm(forms.ModelForm):
# country = ModelChoiceField(Countries.objects.all(), empty_label=None, label='Страна')f
class Meta:
model = TaskVkInvitationsFriendsSearch
exclude = ['type', 'date_creation', 'date_update', 'maintask', 'invited_friends']
widgets = {
'accounts': AccountSelect2TagWidget,
'cities': CitiesSelect2TagWidget,
'scheduler_data': forms.HiddenInput,
# 'country': CountrySelect2TagWidget
}
def __init__(self, *args, **kwargs):
self.owner = kwargs.pop('owner')
super(TaskVkInvitationsFriendsSearchForm, self).__init__(*args, **kwargs)
views.py:
class BaseTaskMixin:
model = TaskVkInvitationsFriendsSearch
form_class = TaskVkInvitationsFriendsSearchForm
success_url = reverse_lazy('vk_bot_tasks_list')
template_name = 'vk_bot/create_task.html'
class TaskCreateView(BaseTaskMixin, CreateView):
def form_valid(self, form):
model = form.save(commit=False)
t = Task()
t.save()
model.maintask = t
model.save()
form.instance.owner = self.request.user
return super(TaskCreateView, self).form_valid(form)