| | 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 | }}} |