ユーザーがプロファイルを作成してペットの写真をアップロードできるようにする新しい機能を既存のアプリに追加しようとしています。
ユーザーがログインすると、自分の名前を表示するプロファイルにリダイレクトされ、プロファイル ページに表示されるモデルに自分の写真を追加することもできます。
現時点では、テンプレートに名前を取得することはできますが、ユーザーの名前とアップロード画像を同時に表示することはできないようです。
Add picture をクリックするたびに、ユーザーが写真をアップロードできず、代わりにこのエラーが発生します
'PictureForm' object has no attribute 'save'
pet = form.save(commit =False) ...
ユーザーが写真をアップロードできるようにページを設計できますが、同時に名前は表示されません。
問題は私の profile.html と views.py の Profile 関数にあると思います
私のviews.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))
私のforms.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