Использование PostgreSQL Arrayfield в качестве поиска типа ManyToMany? - PullRequest
1 голос
/ 13 октября 2019

У меня есть две модели:

class Authors(models.Model):
    name = models.CharField()

class Books(models.Model):
    title = models.CharField()
    author_ids = ArrayField(Integerfield())

Я бы хотел посмотреть на авторов книг, выполнив books.authors. Есть ли способ сделать это? Я не могу найти способ сделать это. Эта база данных уже заполнена author_ids, поэтому ее переработка на что-то другое, например использование промежуточной таблицы, будет затруднена.

1 Ответ

0 голосов
/ 13 октября 2019

Вы можете использовать подзапрос, объединенный с id__in:

author_ids = Books.objects.first().values('author_ids')
authors = Authors.objects.filter(id__in=author_ids)

Если вы оцениваете только authors, он попадет в БД только один раз. Если вам нужно оценить как книги, так и авторов, то, вероятно, есть лучшее решение с использованием объединения.

...