【发布时间】:2018-11-20 07:39:59
【问题描述】:
我有 3 个以这种方式连接的模型:
class book(models.Model):
id = models.AutoField(primary_key=True)
publisher= models.ForeignKey(Publisher, related_name='publisher')
class reader(models.Model):
publisher= models.ForeignKey(Publisher)
class publisher(models.Model):
date = models.DateTimeField()
我正在努力吸引特定书籍的所有读者。
我试着做:Reader.objects.select_related(publisher__id='some_id')
ang 出错了:Unable to get repr for <class 'django.db.models.query.QuerySet'>
我无法更改此模型,有办法使用该模型获取此信息吗?
谢谢。
【问题讨论】:
-
为什么
reader只有published字段,读者应该读一本书,对吧?链接在哪里? -
您的建模有些奇怪,您将读者链接到发布者?人们不阅读出版商,他们阅读书籍。
-
此外
related_name,应该是'books',因为相关名称是相反方向的名称:从publisher到book。我真的建议先清理你的建模,因为基本上所有的业务逻辑都依赖于建模。 -
除了使用“select_related”之外,您在运行服务器时没有收到任何错误吗?我很确定类的顺序定义了您是否可以使用另一个模型作为外键。例如,您不应该在阅读器中使用发布者作为外键。
-
@almostabeginner:事实上他应该可以。但建模简直是“奇怪”。除非这个模型中的读者是出版商雇佣的一些专业校对者,否则读者没有书的钥匙是很奇怪的。
标签: django python-3.x django-models django-queryset django-select-related