【发布时间】:2015-06-12 11:11:32
【问题描述】:
我想检查数据库中是否存在添加的用户输入。如果它确实将用户重定向到现有对象绝对 url,则传递并继续保存输入。到目前为止,我设法检查存在并获取对象,但返回 HttpResponseRedirect(input_get.get_absolute_url()) 没有重定向,尽管我可以在终端中正确打印 url (/tags/215/baseball/)。
相反,我得到:
“确保此值最多包含 50 个字符(它有 65 个)。”
有什么建议吗?谢谢
forms.py
class TagsForm(forms.ModelForm):
def clean_tag_word(self):
tag_word = self.cleaned_data['tag_word']
tag_filter = TagsNew.objects.filter(tag_word=tag_word)
if tag_filter.exists():
tag_get = TagsNew.objects.get(tag_word=tag_word)
tag_redirect=tag_get.get_absolute_url()
print (tag_redirect)
return HttpResponseRedirect(tag_redirect)
else:
pass
return tag_word
models.py(get_absolute_url):
def get_absolute_url(self):
return reverse('tags:tagsnew_detail', kwargs={'pk':self.pk, 'slug':self.slug})
models.py:
class TagsNew(models.Model):
id = models.AutoField (primary_key=True)
tag_word = models.CharField(max_length=50, blank=True)
slug = models.CharField(max_length=50, blank=True)
timestamp=models.DateTimeField(auto_now_add=True, auto_now= False)
updated=models.DateTimeField(auto_now_add=False, auto_now= True)
class Meta:
managed = True
db_table = 'tags_new'
def save(self, *args, **kwargs):
self.slug = slugify(self.tag_word)
super(TagsNew, self).save(*args, **kwargs)
def get_absolute_url(self):
return reverse('tags:tagsnew_detail', kwargs={'pk':self.pk, 'slug':self.slug})
def __str__(self):
return self.tag_word
追踪:
/tags/221/corrections/
<ul class="errorlist"><li>tag_word<ul class="errorlist"><li>Ensure this value has at most 50 characters (it has 65).</li></ul></li></ul>
[08/Apr/2015 04:47:52] "POST /tags/add/ HTTP/1.1" 200 16662
[08/Apr/2015 04:47:52] "GET /static/js/ajax.js HTTP/1.1" 404 1634
[08/Apr/2015 04:47:52] "GET /static/tags/css/style.css HTTP/1.1" 304 0
【问题讨论】:
-
你能展示一下TagsNew模型吗?您似乎在某些字段中提到了最大长度为 50。
-
确定我刚刚添加了模型
-
还请添加完整的跟踪。谢谢
-
我添加了踪迹,Ankit Popli 你发现有什么错误吗?也许 clean_tag_word 中缺少 request 参数?
标签: python django forms redirect exists