我的Django趕上unique_together在形式和不保存文件
class Document(models.Model):
profile = models.ForeignKey(Profile, null=True)
hash = models.CharField(max_length=100, blank=True)
name = models.CharField(max_length=100, blank=True)
url = models.CharField(max_length=100, blank=True)
file = models.FileField()
def __str__(self):
return str(self.id)
@property
def gen_url(self):
self.url = uuid.uuid4().hex
@staticmethod
def gen_digest(file):
m = hashlib.md5()
for chunk in read_by_chunk(file):
m.update(chunk)
digest = m.hexdigest()
return digest
class Meta:
unique_together = (('profile', 'hash'),)
當我嘗試通過管理同一profile
和document
創建的文檔,它通過Form
返回一個錯誤。我認爲這是我想要達到的正確方式。
但是:
if form.is_valid():
print 'valid'
try:
form.save()
except IntegrityError:
print 'unique error'
messages.add_message(request, messages.ERROR, u'already have')
return HttpResponseRedirect('/')
else:
return HttpResponse('not valid')
失敗的錯誤。
所以問題:
1)我怎麼能顯示messages
寧可失敗IntegrityError
2)如何防止file
存儲