[英]Django instance in model form
There was a problem, I wanted to make an Django user object creation form, but it doesn't work.有一个问题,我想做一个Django用户object创建表格,但是不行。 Exactly the same view with a different model works fine.
具有不同 model 的完全相同的视图可以正常工作。 I think the problem is how I transmit the data and instance in form.
我认为问题在于我如何以形式传输数据和实例。
views:意见:
@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)
forms: forms:
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']
You are assigning a non-existing instance ( room
) to your form.您正在为表单分配一个不存在的实例(
room
)。 You should change the view to something like:您应该将视图更改为:
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')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.