簡體   English   中英

model 形式的 Django 實例

[英]Django instance in model form

有一個問題,我想做一個Django用戶object創建表格,但是不行。 具有不同 model 的完全相同的視圖可以正常工作。 我認為問題在於我如何以形式傳輸數據和實例。

意見:

@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:


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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM