python - 当模型表单传递自定义字典时, unique=True 不起作用?

标签 python database django django-models django-views

所以现在我正在编辑模型表单提供给 View 的 Querydict,以使一个字段中的提交全部小写且没有空格。但是当我构造该字典并将其传递回模型表单以进行验证/保存时,如果多次输入相同的内容,则不会给出错误。似乎 unique=True 应该适用于所有格式正确的提交,而不仅仅是 request.POST 的提交。关于这个问题的任何帮助/见解都会很棒。

编辑:代码

处理模型的 View

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.不要重新分配内置dict函数

2.字段处理逻辑应该在clean方法中完成:

class MakesiteForm(forms.ModelForm):

    # your code... Then

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

3.显示如果表单无效会出现什么错误?

关于python - 当模型表单传递自定义字典时, unique=True 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10265830/

相关文章:

python - 将图像保存在base64 django Rest框架中

Python Social Auth Django 模板示例

python - 如何通过 Python 使用 GeckoDriver 和 Firefox 使 Selenium 脚本无法检测?

python - 更改标题行的颜色

database - "wait-die"和 "wound-wait"死锁预防算法有什么区别?

javascript - (Laravel) 预取数据库数据中的实时搜索

mysql - 在不导出数据的情况下分隔mysql数据库中的数据

python - 升级到ubuntu 9.04 django 测试现在很慢

django - 如何仅删除 m2m 关系?

python - tensorflow 条件: check if the values inside the tensor is zero or greater