Экземпляр Django в виде модели
Возникла проблема, я хотел сделать форму создания объекта пользователя Django, но она не работает. Точно такая же форма с другой моделью работает нормально. Думаю, проблема в том, как я передаю данные и экземпляр в форму.
просмотров:
@login_required(login_url='login')
def CreateRoom(request, pk):
topic = Topic.objects.get(id=pk)
form = RoomForm(data=request.POST, instance=room)
if request.method == 'POST':
if form.is_valid():
room = form.save(commit=False)
room.host=request.user
room.topic=topic
room.save()
return redirect('home')
context = {'form': form, 'topic': topic}
return render(request, 'room_form.html', context)
формы:
class RoomForm(ModelForm):
def __init__(self, *args, **kwargs):
super(RoomForm, self).__init__(*args, **kwargs)
self.fields['themes'].queryset = self.instance.themes.all()
class Meta:
model = Room
fields = '__all__'
exclude = ['topic', 'host', 'participants']
Вы присваиваете несуществующий экземпляр (room
) своей форме. Вам следует изменить представление на что-то вроде:
topic = Topic.objects.get(id=pk)
room = Room.objects.create(topic=topic)
form = RoomForm(request.POST, instance=room)
if request.method == 'POST':
if form.is_valid():
room = form.save(commit=False)
room.host=request.user
room.save()
return redirect('home')