そのため、現在、モデルフォームがビューに与える Querydict を編集して、1 つのフィールドの送信をすべて小文字にし、スペースを入れないようにしています。しかし、その辞書を構築してモデルフォームに戻して検証/保存するときに、同じものが複数回入力されていてもエラーは発生しません。request.POST からの送信だけでなく、正しい形式のすべての送信に対して unique=True が機能するはずです。この問題に関するヘルプ/洞察は素晴らしいでしょう。
編集:コード
モデルフォームを処理するビュー
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)