1 | | |
2 | | {{{ |
3 | | |
4 | | class MyModel(models.Model): |
5 | | |
6 | | name = models.CharField(maxlength=255) |
7 | | |
8 | | slug = models.SlugField() |
9 | | |
10 | | from django.core.validators import ValidationError |
11 | | from django.utils.translation import gettext, gettext_lazy |
12 | | |
13 | | def isUniqueSlug(field_data, all_data): |
14 | | if all_data.get('id', None): |
15 | | q=MyModel.objects.exclude(id=all_data.get('id')) |
16 | | else: |
17 | | q=MyModel.objects.all() |
18 | | |
19 | | try: |
20 | | p=q.get(slug__exact=field_data) |
21 | | except: |
22 | | p=None |
23 | | |
24 | | if p: |
25 | | raise ValidationError, gettext_lazy("Is not a unique slug.") |
26 | | |
27 | | for f in MyModel._meta.fields: |
28 | | if f.name == 'slug': |
29 | | f.validator_list.append(isUniqueSlug) |
30 | | |
31 | | }}} |