嘿,我有一个模型,里面有一块冲浪板
class Board(models.Model):
parent_board = models.ForeignKey('self', blank=True, null=True)每个板子可以属于另一个板子
可以这么说
Linux
Windows
OS X可以属于一个名为
Computing这些板包含一个Thread对象
class Thread(models.Model):
board = models.ForeignKey(Board)现在,假设我给Windows板分配了一个线程,我可以很容易地获得这个对象。
但是我想列出与计算相关的所有线程
线程属于Windows板卡,但通过关联也将属于计算板。
如何在计算板上运行查询并从其子板中检索所有线程(以及只属于计算线程的任何线程)?
我做过,但它非常粗糙,我想知道是否有更多的Django方式来做它
这是我目前的代码(工作)
listings = [] # blank list to hold clean values
for board in board.board_set.all(): # for each board
for listing in board.listing_set.all(): # get the listing from each board
listings.append( listing ) # append to the listings list发布于 2010-06-15 23:12:41
你的qn显示了一个‘线程’模型,但接着在你的唤醒代码中引用了'listing_set‘--我猜这是一个拼写错误?
您可以使用Q对象。假设您的Board模型有一个包含板名称的' name‘字段,我相信以下内容应该可以工作:
from django.db.models import Q
Thread.objects.filter(Q(board__parent_board__name='Computing') | Q(name='Computing'))第一个Q对象选择属于电路板的线程,该电路板的'parent_board‘设置为名称为'Computing’的电路板。第二个Q对象选择线程,这些线程直接是名为“Computing”的板的一部分。
https://stackoverflow.com/questions/3045979
复制相似问题