Я чувствую, что ваш код немного странный, если вы следуете рекомендациям Django, параметрам related_name
и некоторому пониманию того, что вы хотите сделать, это должно быть что-то вроде:
class Book(models.Model):
publisher = models.ForeignKey(Publisher, related_name='books')
class Reader(models.Model):
publisher = models.ForeignKey(Publisher, related_name='readers')
class Publisher(models.Model):
date = models.DateTimeField()
И тогда у вас есть:
book = Book.objects.get(pk='<book_pk>')
readers = book.publisher.readers.all()
# or just
readers = Reader.objects.filter(publisher__books__pk='<book_pk>')
Ваше отношение выглядит странно, потому что вы создаете отношение между Reader
и Publisher
вместо того, чтобы делать это с самим Book
.Вы должны создать отношение ManyToMany
между Reader
и Book
, выполнив такой сценарий, в котором: «Читатель читает книги, и несколько читателей могут читать одну и ту же книгу».Сегодня ваш код означает что-то вроде: «Чтение связано с издателем, что означает, что этот читатель прочитал все книги издателя», я не вижу в этом большого смысла, извините.