unique = True在Modelform传递自定义词典时不起作用?

时间:2012-04-22 06:46:32

标签: python database django django-models django-views

所以现在我正在编辑Querydict,模型形式为视图提供了在一个字段中提交全部小写且没有空格的视图。但是当我构造并将该字典传递回要验证/保存的Modelform时,如果多次输入相同的东西,它不会给我一个错误。似乎unique = True应该适用于所有正确格式的提交,而不仅仅是来自request.POST的提交。任何关于这个问题的帮助/见解都会很棒。

编辑:代码

处理模型的观点

dict = {}
sitename = request.POST['sitename']
#insert an if statement telling them only letters are allowed
urltitle = ''.join(sitename.split()).lower()
dict['sitename'] = urltitle
make =  MakesiteForm(dict)
if make.is_valid():
      make.save()

问题中的模型

class Makesite(models.Model):
    sitename = models.CharField(max_length=100, unique = True) 
    siteinfo = models.ManyToManyField(Siteinfo)
    ref_id = models.ManyToManyField(RefID)
    def __unicode__(self):
        return u'%s' %(self.sitename)

1 个答案:

答案 0 :(得分:2)

1.不要重新分配内置dict功能

2.字段处理逻辑应该用干净的方法完成:

class MakesiteForm(forms.ModelForm):

    # your code... Then

    def clean_sitename(self):
        sitename = self.cleaned_data['sitename']
        return ''.join(sitename.split()).lower()

3.如果表格无效,请说明你得到的错误?