Как проверить, существуют ли значения списка в двух или более таблицах базы данных?

У меня есть следующий тип Django Model.

class ClientPackageMapping(models.Model):
    user_id=models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, null=False)
    client_package=models.ForeignKey(ClientPackage,on_delete=models.CASCADE,blank=True, null=True)
    joined_date = models.DateField(null=True,blank=True)
    expiry_date = models.DateField(null=True,blank=True)
    class Meta:
        abstract=True

    @property
    def is_expired(self):
        if self.expiry_date< date.today():
            return True
        return False


class ClientPackageBasicStocks(ClientPackageMapping):
    stocks = ArrayField(models.CharField(max_length=5),null=True,blank=True)

class ClientPackageSilverStocks(ClientPackageMapping):
    stocks = ArrayField(models.CharField(max_length=5),null=True,blank=True)

class ClientPackageGoldStocks(ClientPackageMapping):
    stocks = ArrayField(models.CharField(max_length=5),null=True,blank=True)

class ClientPackagePlatinumStocks(ClientPackageMapping):
    stocks = ArrayField(models.CharField(max_length=5),null=True,blank=True)

В основном идея заключается в том, что если определенный пользователь имеет запас в основной таблице, но если тот же запас существует в другой таблице, т.е. серебро или золото, то должна возникнуть ошибка валидации. Есть ли способ проверить входящие значения списка с базой данных?

 if ClientPackagePlatinumStocks.objects.filter(stocks=[*self._data['stocks']]).exists():
                raise ValidationError({'duplicate_stocks': f'Duplicate stocks!'}) 

Я пытался сделать это, но я не могу создать или ограничить пользователя от добавления пакета в silver, когда у него уже есть тот же пакет в basic, любая помощь будет очень полезна.

Вернуться на верх