我使用Ubuntu 14.10和apache2 web服務器。在我的Django項目我有關於用戶的附加信息模型:Django - modelform不保存圖像
class UserProfile(models.Model):
class Meta:
verbose_name_plural = u'User profile'
user = models.OneToOneField(User)
birthday = models.DateField(blank=True, null=True)
avatar = models.ImageField(upload_to='media/profile/avatar', blank=True, null=True)
name = models.CharField(blank=True, null=True, max_length=20)
surname = models.CharField(blank=True, null=True, max_length=50)
phone = models.CharField(blank=True, null=True, max_length=12)
def __unicode__(self):
return '%s' % self.user
這裏是我的形式:
class ExtraProfileDataForm(ModelForm):
name = forms.CharField(label=(u'Enter your name'))
surname = forms.CharField(label=(u'Enter your surname'))
phone = forms.CharField(label=(u'Enter your phone'))
birthday = forms.DateField(label=(u'Birthday'))
avatar = forms.ImageField(label=(u'Avatar'))
class Meta:
model = UserProfile
fields = ('name', 'surname', 'phone', 'birthday', 'avatar')
def __init__(self, *args, **kwargs):
super(ExtraProfileDataForm, self).__init__(*args, **kwargs)
for key in self.fields:
self.fields[key].required = False
而且本所認爲:
@login_required
def UserFullDataForm(request):
if request.method == 'POST':
form = ExtraProfileDataForm(request.POST)
if form.is_valid():
profile_user = request.user
user_profile, created = UserProfile.objects.get_or_create(user=profile_user)
user_profile.name = form.cleaned_data['name']
user_profile.surname = form.cleaned_data['surname']
user_profile.phone = form.cleaned_data['phone']
user_profile.birthday = form.cleaned_data['birthday']
user_profile.avatar = form.cleaned_data['avatar']
user_profile.save()
return HttpResponseRedirect('/profile/')
else:
return render(request, 'profiles/extra_profile.html', {'form':form})
else:
form = ExtraProfileDataForm()
context = {'form':form}
return render (request, 'profiles/extra_profile.html', context)
當我填寫形成保存到數據庫的所有字段,但圖像字段除外。 media/profile/avatar
文件夾的文件名爲www-data
,chmod爲775.日誌文件爲空。我沒有任何錯誤去理解爲什麼會發生。你能幫我理解爲什麼會發生這種情況,或者我必須做些什麼才能看到錯誤。謝謝。 PS。這怎麼看起來像Apache配置項目的媒體:
Alias /media/ /var/www/project/media/
<Directory /var/www/project/>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Require all granted
</Directory>
謝謝您的回答。我添加'request.FILES'但仍然沒有任何反應。 –
@Zagorodniy Olexiy在'form.is_valid()'後保存表單對象並嘗試 – Kjjassy
我添加'form.save'後,我有另一個錯誤'列中的空值'user_id'違反了非空約束細節:失敗的行包含(31 ,null,,null,rtyrtyr,,)。' –