var isObject = function(obj) {
var type = typeof obj;
return type === 'function' || type === 'object' && !!obj;
};
!!obj
- это сокращение для проверки, является ли объект достоверным (чтобы отфильтровать ноль / неопределенное значение)
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, которая имеет то же расширение, мы включаем текущую запись.
Затем мы фильтруем запрос, возвращенный, чтобы найти, содержит ли он уже профиль пользователя __ клиент, который мы являемся передающими в текущей записи.