Ограничение Django на поле Foreign Key 'startswith'
У меня возникла проблема с ограничением в Django. Я хочу создать ограничение на поле внешнего ключа, чтобы проверить, начинается ли оно с user_id, но Django считает, что "__startswith" - это опция поиска. Я ошибаюсь в синтаксисе ограничений или это проблема Django? Возможно, я пытался сделать это ограничение с помощью необработанного SQL и оно работает.
Получил эту ошибку:
django.core.exceptions.FieldError: Related Field got invalid lookup: startswith
У меня есть эта модель:
class PrivateModel(models.Model):
id = models.CharField(primary_key=True, max_length=255, default="", editable=False)
_owner = models.ForeignKey(User, on_delete=models.CASCADE)
class Meta:
abstract = True
class Genre(PrivateModel):
genre = models.CharField(max_length=255)
class Book(PrivateModel):
caption = models.CharField(max_length=255)
genre = models.ForeignKey(Genre, on_delete=models.CASCADE)
class Meta:
constraints = [
models.CheckConstraint(
name="book_genre_owner_constraint",
check=Q(genre_id__startswith=F("_owner_id"))
),
]