我有一个父模型,该模型具有30,000多个记录,每个记录至少有3-4个孩子。我希望能够在具有非常特定的规则集的表上显示子级。
from django.db import models
from django.utils.translation import ugettext_lazy as _
class Parent(models.Model):
name = models.CharField(_("Name"), max_length=128)
class Child(models.Model):
parent = models.ForeignKey(Parent)
state = models.CharField(
_("State"), choices=(
('A', "Apple"),
('B', "Ball"),
('C', "Cat"),
('D', "Dog"),
)
)
使用上面的两个模型,我过滤掉了所有state is "A" or "B"
的Child对象。我很难满足的部分需求是,例如,我可能在Bs
和As
之间有一些Cs
,它们排成一行:
[R] [R] [R]
Apple Cat Cat
如果它们之间没有B状态,我想检索As
和Cs
,但是我有一个特殊情况,我想在下一个检索之前检索最新的B
C
而不是A
或B
本身。
[R] [R] [R] [R]
Apple Ball Cat Ball Ball Cat Ball Cat
总结:
如果在As或Cs后面有B或行的末尾是B,我想总是选择下一个C之前的最新B。
PostgreSQL完全可以做到吗?由于缺少查询所有内容并使用Python进行数据批量处理的功能,因为我正在显示记录的表是分页的。
答案 0 :(得分:1)
@PauloScardine有一个好主意,着手使用MPTT始终选择对象(如果它是球)作为父对象。谢谢!