Django Unique Together (с внешними ключами)

  var isObject = function(obj) {
    var type = typeof obj;
    return type === 'function' || type === 'object' && !!obj;
  };

!!obj - это сокращение для проверки, является ли объект достоверным (чтобы отфильтровать ноль / неопределенное значение)

58
задан Manu 9 May 2019 в 08:30
поделиться

1 ответ

from django.core.exceptions import ValidationError

.....

class UserProfileExtension(models.Model):
    extension = models.ForeignKey(Extension, unique=False)
    userprofile = models.ForeignKey(UserProfile, unique=False)
    user = models.ForeignKey(User, unique=False)  

    def validate_unique(self, *args, **kwargs):
        super(UserProfileExtension, self).validate_unique(*args, **kwargs)
        query = UserProfileExtension.objects.filter(extension=self.extension)
        if query.filter(userprofile__client=self.userprofile.client).exists():
            raise ValidationError({'extension':['Extension already exits for userprofile__client',]})

первый запрос состоит в том, чтобы отфильтровать все записи в модели UserProfileExtension, которая имеет то же расширение, мы включаем текущую запись.

Затем мы фильтруем запрос, возвращенный, чтобы найти, содержит ли он уже профиль пользователя __ клиент, который мы являемся передающими в текущей записи.

0
ответ дан 24 November 2019 в 18:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: