Pgtrigger.Q неправильно ссылается на таблицу с внешним ключом
Я пытаюсь реализовать простой pgtrigger.Protect
на таблице, который будет выполнять проверку булевого значения в столбце внешнего ключа. Я правильно написал триггер, но когда происходит миграция, столбец внешнего ключа не ссылается должным образом. Нужна помощь.
User Table
from datetime import datetime as DateTime
from django.db.models import (
BooleanField, CASCADE, CharField, DateField, DateTimeField, EmailField,
ForeignKey, IntegerField, JSONField, Model, OneToOneField
)
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
import pgtrigger
from flexbox_tv.models.user.util.manager import UserAccountManager
class User(AbstractBaseUser, PermissionsMixin):
class Meta:
db_table = "user"
managed = True
triggers = [
pgtrigger.SoftDelete(name = "User_SOFTDELETE", field = "is_active", value = False)
]
id = CharField(
max_length = 10,
primary_key = True,
null = False,
blank = False,
unique = True
)
account_name = CharField(max_length=50, null=False, blank=False, unique=True)
dob = DateField(auto_now=False, auto_now_add=False, null=False, blank=False)
email = EmailField(max_length=50, null=False, blank=False, unique=True)
password = CharField(max_length=254, null=False, blank=False)
content_provider = BooleanField(default=False, null=False, blank=False)
is_staff = BooleanField(default=False, null=False, blank=False)
is_active = BooleanField(default=False, null=False, blank=False)
USERNAME_FIELD = "id"
REQUIRED_FIELDS = ["account_name", "dob", "email", "password"]
objects = UserAccountManager()
def __str__(self):
return self.account_name
class Product(Model):
class Meta:
db_table = "product"
triggers = [
pgtrigger.SoftDelete(name = "Product_SOFTDELETE", field = "is_active", value = False),
pgtrigger.Protect(
name = "Product_PROTECT_insert",
operation = pgtrigger.Insert | pgtrigger.Update,
when = pgtrigger.Before,
condition = pgtrigger.Q(new__id_provider__content_provider = True)
)
]
id = CharField(
max_length = 20,
primary_key = True,
null = False,
blank = False,
unique = True
)
id_provider = ForeignKey(User, db_column="id_provider", on_delete=CASCADE)
.....
.....
.....
Migration Error:
LINE 45: FOR EACH ROW WHEN (NEW."content_provider")
В файле миграции его нужно преобразовать в нечто вроде NEW."user"."content_provider"
. Как я могу создать этот триггер правильно для столбца внешнего ключа? Нужна помощь