使用实例进行表单验证
|
我正在以模型形式验证
ImageField
。我目前正在工作-
# in model
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
avatar = models.ImageField(upload_to=\'images/%Y/%m/%d\', blank=True)
class ProfilePictureForm(ModelForm):
class Meta:
model = UserProfile
fields = (\'avatar\', \'headline\')
def clean_avatar(self):
if not self.cleaned_data[\'avatar\']:
raise forms.ValidationError(\'Oops, looks like you forgot to attach an image!\')
else:
return self.cleaned_data[\'avatar\']
# in views
def getting_started_pic(request):
username = request.session.get(\'username\')
profile = UserProfile.objects.get(user=username)
if request.method == \'POST\':
form = ProfilePictureForm(request.POST, request.FILES)
if form.is_valid():
form = ProfilePictureForm(request.POST, request.FILES, instance = profile)
form.save()
return render_to_response (...)
请注意,我将两次设置form变量,首先不使用实例,然后再使用实例。当我只定义一次表单(包括instance = profile
)时,表单世界从不返回None,因此表单将无法正确验证(即self.cleaned_data [\'avatar \']始终为非空)。
我有两个与此有关的问题:
1-为什么(... instance =配置文件)影响self.cleaned_data [\'avatar \']部分?
2-如何删除此视图功能中的冗余?
没有找到相关结果
已邀请:
1 个回复
臀夯脖锑