我有一个父母的模型,有超过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"的子对象。我觉得很难满足的部分要求是,我可能在As和Cs之间设置了一个As,例如,排列成一行:
[R] [R] [R]
Apple Cat Cat如果它们之间没有B状态,我想检索As和Cs,但是我有一个特例,我想在下一个C之前检索最新的B,而不是A或B本身。
[R] [R] [R] [R]
Apple Ball Cat Ball Ball Cat Ball Cat总结如下:
我希望始终在下一个C之前选择最新的B,如果在As或Cs之后有B,或者行的末尾是B。
这在PostgreSQL中是完全可能的吗?因为缺少查询所有内容并使用Python对数据进行按摩,因为我正在显示记录的表是分页的。
发布于 2018-10-12 10:34:05
@Paulo斯卡丁有一个好主意,他开始使用MPTT来选择对象之前的对象作为父母,如果它是一个球。谢谢!
https://stackoverflow.com/questions/52619681
复制相似问题