我有一个应用程序,可以让你创建个人资料。我的应用程序的一个功能是让你编辑你的名字并上传一张图片。
问题是,用户不能提交图像,除非他输入他的name.How,我可以修复这个页面,这样如果用户提交了图像,但没有提交姓名,就可以这样做了。他将仍然使用他的旧名字,或者如果他不提交图像并更改自己的名字。他还会留着他的老照片吗?
我尝试添加blank=True,null = False,null = True,但似乎没有效果
我的models.py
class Person(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=100,null=True,blank=False)
image = models.FileField(upload_to="images/")
def __unicode__(self):
return self.name我的forms.py
class PersonForm(forms.ModelForm):
class Meta:
model = Person
fields = ('image','name',)我的views.py
def Display(request):
if not request.user.is_authenticated():
return HttpResponseRedirect(reverse('world:LoginRequest'))
if request.method == 'POST':
form = PersonForm(request.POST, request.FILES)
if form.is_valid():
person = Person.objects.get(user=request.user)
person.image = form.cleaned_data['image']
person.name = form.cleaned_data['name']
person.save()
return render(request,'edit.html',{'form': PersonForm()})

发布于 2013-03-13 18:29:25
class Person(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=100, blank=True)
image = models.FileField(upload_to="images/", blank=True)
def __unicode__(self):
return self.name
def Display(request):
if not request.user.is_authenticated():
return HttpResponseRedirect(reverse('world:LoginRequest'))
if request.method == 'POST':
form = PersonForm(request.POST, request.FILES)
if form.is_valid():
image = form.cleaned_data['image']
name = form.cleaned_data['name']
person = Person.objects.get(user=request.user)
if image:
person.image = form.cleaned_data['image']
if name:
person.name = form.cleaned_data['name']
person.save()
return render(request,'edit.html',{'form': PersonForm()})发布于 2013-03-13 18:28:24
django forms对用户数据进行验证
验证在两个级别上完成:
- if the field is required and the user didn't enter any data it will raise an error
- if the user entered improperly formatted data for that field it will raise an error
- you can override the behavior of field validation by implementing functions named as `clean_fieldname`
- this type of validation results in `form.field.errors`
- checks for any (non-field specific) validation errors
- you can override the behavior by implementing `clean` method
- this type of validation results in `form.non_field_errors`
从你的模型中:
图像不允许为空,这意味着它是必需的。不输入图像将引发错误
让名称和图像都使用blank=True
另外,我推荐使用form.save()而不是保存视图中的模型
还有一个用于保存图像的内置ImageField
https://stackoverflow.com/questions/15381980
复制相似问题