Как проверить, существуют ли значения списка в двух или более таблицах базы данных?
У меня есть следующий тип 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, любая помощь будет очень полезна.