gpt4 book ai didi

python - 保存对象时“MyModel”对象不可迭代(Django)

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:18 26 4
gpt4 key购买 nike

当我尝试编辑这个对象时,出现上述错误。如果我使用表单中所需的值创建字典,它只会保存一个新对象,而不会覆盖当前对象。

View .py

@login_required
def edit_song(request, song_id):
song = get_object_or_404(Song, pk=song_id)

form = SongForm(instance=Song.objects.get(id=song_id))

if request.method == 'POST':
form = SongForm(data=request.POST, initial=song)
if form.is_valid():
obj = form.save()

obj.save()
return HttpResponseRedirect('/music-manager/song/' + str(obj.pk))

表单.py

class SongForm(forms.ModelForm):
class Meta:
model = Song
fields = ['title', 'lyrics', 'notes', 'key', 'chords', 'video', 'audio']

def __init__(self, *args, **kwargs):
super(SongForm, self).__init__(*args, **kwargs)
for visible in self.visible_fields():
visible.field.widget.attrs['class'] = 'form-control'

最佳答案

您应该为 POST 请求和 GET 请求设置 instance

song = get_object_or_404(Song, pk=song_id)
form = SongForm(instance=song)

if request.method == 'POST':
form = SongForm(data=request.POST, instance=song)
if form.is_valid():
...

您不需要为 POST 请求设置 initial,所以我已将其删除。

关于python - 保存对象时“MyModel”对象不可迭代(Django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50044819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com