2016-03-03 97 views
0

嗨,我想通过JS在我的窗体中实现汽车slu function功能,以下是我的代码。模型形式的Django汽车slu 012

我的模型:

class Sponsor(models.Model): 
    name = models.CharField(max_length=100) 
    slug = models.SlugField(max_length=150) 

我的形式:

class SponsorForm(ModelForm): 

    class Meta: 
     model = Sponsor 
     fields = ['name', 'slug', 'image', 'phone', 'website', 'address', 'city', 'state', ] 
     exclude = ('created_by',) 

正如你所看到的,我想蛞蝓现场展示给用户,他可以对其进行编辑,但编辑之前我会喜欢根据他在字段“名称”中输入的内容自动设置我的slu g。在管理员就是这样。

在互联网上搜索,我发现Django核心有这个文件:urlify.js,什么是真棒。什么是迄今为止我所做的是:

<script src="{% static "js/urlify.js"%}"></script> 
<script type="text/javascript"> 

$(function() { 
    $("#id_name").keyup(function() { 
     $("#id_slug").val(URLify($("#id_name").value, 150)); 
    }); 
}); 
</script> 

我得到的是控制台

这些误差修改

错误1:

Uncaught SyntaxError: Invalid regular expression: /�|O|U|o|u|a|?|d|e|p|s|t|f|G|T|S|F|i|I|g|A|c|n|r|C|D|E|N|R|l|z|L|Z|k|K/: Nothing to repeat

错误2:

Uncaught TypeError: Cannot read property 'replace' of undefined

任何帮助或想法将不胜感激。

回答

1

这相当于信任客户端(即允许浏览器提交一个你无法控制的字段),这绝不是一个好主意。这意味着恶意用户可能会绕过您的代码并为您的模型slu pass声传递任何价值,这不太可能是期望的行为。基于它的名字覆盖模型的save(...)方法首先set the slug你的模型,然后通过super继续正常的保存方法传递执行回的Django:

相反,这样做在服务器上。

+0

很好的回答:) – Lara

+0

谢谢!希望它有帮助。 :) – kungphu