我似乎无法使用.is_valid()
来验证我的表单def edit_social_media(request, user_id):
#verify a user is allowed to access the page
# user is saving the form
if request.POST:
form = SocialMediaForm(request.POST)
if form.is_valid():
...
return HttpResponseRedirect(reverse(users.profile,
args = (request.user.id,)))
# displaying the initial form
else:
try:
form = SocialMediaForm(instance = SocialMedia.objects.get(user = request.user))
except SocialMedia.DoesNotExist:
form = SocialMediaForm()
return render_to_response('users/edit_social_media.html', {'form': form, 'user' : user},
context_instance = RequestContext(request))
class SocialMediaForm(forms.ModelForm):
class Meta:
model = SocialMedia
fields = {'twitter', 'facebook', 'linkedin'}
<form method="post" action=''>
{% csrf_token %}
<div class="form-col-left">
<p>
{{ form.as_p }}
</p>
</div>
<div class="submitbutton">
<input type="submit" class="green button" value="Save Social Media Settings" />
</div>
</form>
from django.db import models
from django.contrib.auth.models import User
class SocialMedia(models.Model):
class Meta:
app_label = 'dashboard'
#the user associated with the data
user = models.ForeignKey(User)
#Twitter, Facebook, and Linkedin pages
twitter = models.URLField("Twitter")
facebook = models.URLField("Facebook")
linkedin = models.URLField("Linkedin")
非常感谢一些帮助。我对django很新,所以我一直在想念一些细微的细微差别。我在stackoverflow上发现了一些与绑定和未绑定表单相关的类似问题,但是从阅读文档中我认为我将数据正确绑定到表单。
答案 0 :(得分:1)
由于这是一个ModelForm,它有助于查看此表单正在使用的实际模型,即SocialMedia类。此外,我不确定你的意思是没有让它验证,但我假设is_valid()方法返回False。
我的猜测是该方法返回False,因为您没有在表单上设置用户。在POST词典中,您没有user或user_id。在“if form.is_valid()”语句之前添加以下行:
form.instance.user = self.request.user
希望这有效。