Делаю на сайте группы, написал представление для инвайта человека в группу по логину. На форме есть select из списком логинов, и кпопка для отправления.
invite.html<form method="post" action="">
{% csrf_token %}
{% if inv_inf %}
{{ inv_inf }} <br><br>
{% endif %}
{{ form.to_user.label }}: {{ form.to_user }}
<input type="submit" value="Invite">
</form>
Код ниже мне не очень нравится, и я не уверен у его правильности. Прошу помочь мне его оптимизировать и исправить неправильные участки.
views.pydef invite_to_group(request, g_id):
inv_inform = ''
if request.method == 'POST':
form = InviteUserToGroupForm(request.POST)
if form.is_valid():
to_user = User.objects.get(username=form.cleaned_data.get('to_user'))
g = GroupExt.objects.get(id=g_id) # GroupExt - разширеная группа Django с доп. полями
g_members = User.objects.filter(groups=g)
if to_user.username == request.user.username:
inv_inform += 'Нене, себя ты не пригласишь'
return render(request, template_name='invite.html', context={'form': form, 'inv_inf': inv_inform})
if to_user in g_members:
inv_inform += 'Пользователь уже состоит в группе'
return render(request, template_name='invite.html', context={'form': form, 'inv_inf': inv_inform})
try:
inv = Invite.objects.get(to_user=to_user, group=g) # Invite - модель приглашения пользователя в группу
inv_inform += 'Приглашение уже отправлено!'
return render(request, template_name='invite.html', context={'form': form, 'inv_inf': inv_inform})
except MultipleObjectsReturned:
inv_inform += 'Приглашение уже отправлено!'
return render(request, template_name='invite.html', context={'form': form, 'inv_inf': inv_inform})
except Invite.DoesNotExist:
inv = Invite.objects.create(to_user=to_user, group=g)
inv.save()
inv_inform += 'Отправлено!'
return render(request, template_name='invite.html', context={'form': form, 'inv_inf': inv_inform})
form = InviteUserToGroupForm()
return render(request, template_name='invite.html', context={'form': form})