我不确定出了什么问题但是来自用户的数据没有预先填充到表单中,即使在遵循 django 文档之后,我也只得到一个空表单,在 url 中我有正确的 id对于该项目,我有文本和 2 个“文件字段”,我需要将它们请求到更新表单中,并希望用户能够更新一个或多个字段,感谢帮助?
这是我的观点和更新表单 html
观看次数
@login_required
def music_upload(request, slug):
if request.method == "POST":
form = MusicForm(request.POST, request.FILES)
if form.is_valid():
song = form.save(commit=False)
song.artist = request.user
song.track = request.FILES['track']
file_type = song.track.url.split('.')[-1]
file_type = file_type.lower()
if file_type not in MUSIC_FILE_TYPES:
messages.error(request, f'ERROR - Track needs to be in MP3 format, Please try again!')
return render(request, 'feed/music_upload.html', {'form':form})
else:
song.save()
messages.success(request, f'Track Uploaded')
return redirect('my_profile', slug=slug)
else:
form = MusicForm()
return render(request, 'feed/music_upload.html', {'form':form})
@login_required
def edit_song(request, pk):
artist = request.user.profile.user_id
track = Music.objects.get(pk=pk).artist
if request.method == 'POST':
m_form = MusicUpdateForm(request.POST, request.FILES, instance=track)
if m_form.is_valid():
m_form.save()
messages.info(request, f'Your track has been updated!')
return redirect('edit_track')
else:
m_form = MusicUpdateForm(instance=track)
context ={
'm_form': m_form,
'track': track,
'artist': artist,
}
return render(request, 'feed/music_update.html', context)
更新.html
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-9 col-lg-9 mx-auto">
<div class="card card-signin my-5">
<div class="card-body">
<h5 class="card-title text-center"><b>Upload Music</b></h5>
<form class="form-signin" method = "POST" enctype="multipart/form-data">
{% csrf_token %}
<fieldset class="form-group"><br>
{{ m_form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-info btn-primary btn-block text-uppercase post_button" type="submit">Update</button><br>
答案 0 :(得分:0)
您没有正确传递轨道实例
track = Music.objects.get(pk=pk)
if request.method == 'POST':
m_form = MusicUpdateForm(request.POST, request.FILES, instance=track)