我有两个order_with_respect_to
关系模型:
class Book(models.Model):
pass
class Chapter(models.Model):
book = models.ForeignKey(Book, on_delete=models.CASCADE)
class Meta:
order_with_respect_to = 'book'
我知道我可以得到这样的章节顺序:
my_book.get_chapter_order()
但是我需要反向操作:给出一章,我想知道它的位置。我知道有一个生成的_order
字段,但它是私有的,所以我不想使用它。
我的第一种方法是这样的:
my_chapter = Chapter.objects.get(pk=WHATEVER)
chapters = my_book.get_chapter_order()
for position, chapter_id in enumerate(chapters):
if chapter_id == my_chapter.id:
break
print(position)
但感觉很脏:每次我想知道章节的顺序时,我必须得到整个订单清单。我认为这应该只是一章的属性。
有没有更干净的方法呢?
答案 0 :(得分:1)
只需使用index
类型的list
方法,如下所示:
position = chapters.index(my_chapter.id)