Выберите из выпадающего списка пользователей, чтобы назначить их в определенную комнату
Я пытаюсь создать выпадающий список пользователей, который может быть изменен и обновлен по желанию пользователя-администратора. Я могу видеть выпадающий список пользователей, но когда я перехожу к созданию комнаты и пытаюсь выбрать пользователя, он не сохраняется и поле остается пустым. Я использовал ModelChoiceField
в моем forms.py
файле для создания выпадающего списка пользователей. Я думаю, что это потому, что я неправильно вызвал его в views.py
, но я не уверен, как действовать дальше. Любая помощь будет очень признательна
Вот мой код на данный момент
forms.py
class RoomForm(ModelForm):
userList = forms.ModelChoiceField(queryset=User.objects.all())
class Meta:
model = Room
fields = '__all__'
exclude = ['host', 'participants']
views.py
@login_required(login_url='login')
def createRoom(request):
form = RoomForm()
topics = Topic.objects.all()
if request.method == 'POST':
topic_name = request.POST.get('topic')
topic, created = Topic.objects.get_or_create(name=topic_name)
Room.objects.create(
host=request.user,
topic=topic,
userList = request.POST.get('userList'),
name=request.POST.get('name'),
status=request.POST.get('status'),
priority=request.POST.get('priority'),
type=request.POST.get('type'),
description=request.POST.get('description'),
)
return redirect('home')
context = {'form': form, 'topics': topics}
return render(request, 'room/room_form.html', context)
@login_required(login_url='login')
def updateRoom(request, pk):
room = Room.objects.get(id=pk)
form = RoomForm(instance=room)
topics = Topic.objects.all()
if request.user != room.host:
return HttpResponse('You are not allowed here!!')
if request.method == 'POST':
topic_name = request.POST.get('topic')
topic, created = Topic.objects.get_or_create(name=topic_name)
room.name = request.POST.get('name')
room.topic = topic
room.user = room.user
room.status = request.POST.get('status')
room.priority = request.POST.get('priority')
room.type = request.POST.get('type')
room.description = request.POST.get('description')
room.save()
return redirect('room', pk=room.id)
context = {'form': form, 'topics': topics, 'room': room}
return render(request, 'room/room_form.html', context)
часть Room models.py
class Room(models.Model):
host = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
topic = models.ForeignKey(Topic, on_delete=models.SET_NULL, null=True)
name = models.CharField(max_length=200)
status = models.BooleanField(choices=STATUS, default=True)
priority = models.TextField(choices=PRIORITIES, default='None', max_length=10)
type = models.TextField(choices=TYPE, default='Misc', max_length=15)
description = models.TextField(null=True, blank=True)
participants = models.ManyToManyField(
User, related_name='participants', blank=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
Traceback
Traceback (most recent call last):
File "C:\Users\mikha\issue_env\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "C:\Users\mikha\issue_env\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\mikha\issue_env\lib\site-packages\django\contrib\auth\decorators.py", line 23, in _wrapped_view
return view_func(request, *args, **kwargs)
File "C:\Users\mikha\issuetracker\base\views.py", line 57, in createRoom
Room.objects.create(
File "C:\Users\mikha\issue_env\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\mikha\issue_env\lib\site-packages\django\db\models\query.py", line 512, in create
obj = self.model(**kwargs)
File "C:\Users\mikha\issue_env\lib\site-packages\django\db\models\base.py", line 559, in __init__
raise TypeError(
Exception Type: TypeError at /create-room/
Exception Value: Room() got an unexpected keyword argument 'userList'