Ограничение 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"))
            ),
        ]

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