Уникальное ограничение на основе кода Модель Джанго - PullRequest
2 голосов
/ 07 июля 2010

У меня есть модель Django, которая выглядит так:

class Categories(models.Model):
    """
    Model for storing the categories
    """
    name = models.CharField(max_length=8)
    keywords = models.TextField()
    spamwords = models.TextField()
    translations = models.TextField()

def save(self, force_insert=False, force_update=False):
    """
    Custom save method that converts the name to uppercase
    """
    self.name = self.name.upper()
    super(Categories, self).save(force_insert, force_update)

Всякий раз, когда данные вставляются или обновляются. Я хотел бы проверить, что записи с таким именем не существует. Это уникальное ограничение, которое я хотел бы реализовать с помощью кода, а не БД. Объем данных в этой таблице ничтожен, поэтому снижение производительности не является проблемой. Если есть нарушение ограничения, я бы хотел поднять одно из встроенных исключений ограничения Django вместо создания пользовательского.

Может ли кто-нибудь, как мне самый лучший / быстрый способ сделать это?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 07 июля 2010

В определении вашей модели вы можете сказать Django, что имя должно быть уникальным :

name = models.CharField(max_length=8, unique=True)

A django.db.IntegrityError будет вызвано, если вы попытаетесь сохранить две записи сто же имя.

0 голосов
/ 07 июля 2010

в представлении

try:
    Category.objects.get(name='name')
except Category.DoesNotExist:
    # call the save method of model
...