【发布时间】:2016-08-15 20:09:21
【问题描述】:
我是 Django 新手
在我的主页中,我想为用户提供 2 个选择:将照片上传到新相册或现有相册。
问题是其中一个表单最初没有显示在 HTML 中,我只能看到它的提交按钮。但是当我点击提交按钮时,会出现表单,以及“此字段为必填项”警告。
为此,我在 forms.py
中创建了 2 个表单class AlbumForm(ModelForm):
class Meta:
model = Album
fields = ('title', 'description',)
class dropDownForm(forms.Form):
Albums = forms.ModelChoiceField(queryset=Album.objects.filter(user__id=1))
def __init__(self, user, *args, **kwargs):
super(dropDownForm, self).__init__(*args, **kwargs)
self.fields['Albums'].queryset = Album.objects.filter(user__id=user.id)
AlbumForm 用于创建新专辑,dropDownForm 用于从现有专辑中进行选择。
在 views.py 我有:
def upload_album(request):
if request.user.is_authenticated():
if request.user.albums.all() is not None:
albums = request.user.albums.all()
dropdownAlbum = request.POST.get('Albums')
if request.method == 'GET':
album = AlbumForm()
form = dropDownForm(request.user)
if ((request.method == 'POST') and ('ExistingAlbum' in request.POST)):
form = dropDownForm(request.user)
userID = request.user.id
curr = UserProfile.objects.filter(id=userID).first()
curr.currentAlbum = int(dropdownAlbum)
intAlbum = int(dropdownAlbum)
curr.save()
return HttpResponseRedirect('/upload-media')
if ((request.method == 'POST') and ('CreateNewAlbum' in request.POST)):
form2 = AlbumForm(request.POST)
if form2.is_valid():
album = form2.save(commit=False)
album.user = request.user
album = form2.save()
created_album_id = Album.objects.filter(title=album).first().id
userID = request.user.id
curr = UserProfile.objects.filter(id=userID).first()
curr.currentAlbum = created_album_id
curr.save()
request.user.albums.add(album)
return HttpResponseRedirect('/upload-media/')
return render(request, "base.html", locals())
在 HTML 中:
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" name="ExistingAlbum" value="Continue" href="/upload-media/">
</form>
</div>
<div>
<form method="POST">
{% csrf_token %}
{{ form2.as_p }}
<button type="submit" name="CreateNewAlbum" value="Create New Album">Create</button>
</form>
</div>
感谢任何帮助。
【问题讨论】:
标签: python html django django-forms