我正在尝试向我现有的应用程序添加一个新功能,让用户创建个人资料并上传他们的宠物照片。
当用户登录时,他会被重定向到显示他的名字的个人资料中,并且他可以将自己的照片添加到模型中,该模型将显示在个人资料页面上。
目前,我可以将名称检索到模板中,但似乎无法同时显示用户名和上传图片。
每当我单击添加图片时,它不会让用户上传图片而是我收到此错误
'PictureForm' object has no attribute 'save'
pet = form.save(commit =False) ...
我可以设计页面让用户上传图片但同时不显示名称。
我认为问题出在我的 profile.html 和 views.py 的 Profile 函数中
我的部分观点.py
@login_required
def Profile(request):
Person = request.user.get_profile()
if not request.user.is_authenticated():
return HttpResponseRedirect('/login/')
if request.method == "POST":
form = PictureForm(request.POST ,request.FILE or None)
if form.is_valid():
pet = form.save(commit =False)
pet.save()
context = (
{'Person': Person} ,
{'form':PictureForm()}
)
return render_to_response('profile.html', context, context_instance=RequestContext(request))
我的部分表单.py
from django import forms
from django.contrib.auth.models import User
from django.forms import ModelForm
from pet.models import *
class PictureForm(forms.Form):
class Meta:
model = Person
fields = ('image')
我的个人资料.html
{% if Person %}
<ul>
<li>Name : {{Person.name}} </li>
</ul>
{% endif %}
<form method="POST" enctype="multipart/form-data" "action" >
{% csrf_token %}
<ul>
{{ form.as_ul }}
</ul>
<input type = "submit" value= "Add Picture" />
</form>
我的模型.py
from django.db import models
from django.db.models.signals import post_save
from django.contrib.auth.models import User
class Person(models.Model):
user = models.OneToOneField(User)
name = models.CharField(max_length=100)
image = models.FileField(upload_to="images/",blank=True,null=True)
def __unicode__(self):
return self.name
class Pet(models.Model):
Person = models.ForeignKey(Person)
description = models.CharField(max_length=100)
image = models.FileField(upload_to="images/",blank=True,null=True)
def __unicode__(self):
return self.description