0
我是初学者,在python和Django上工作我的第一个项目。我一步一步地克服了所遇到的几乎所有困难,但是一个问题导致我陷入困境,我没有更多的想法如何解决它。
目标是显示当前在特定操场的每个用户的孩子(孩子)。它应该是这样的:我有一个特定用户的“当前访问”,我想显示他/她的孩子/孩子。我不想选择哪个孩子是在他/她的父母一个操场,在这个阶段,我认为整组可能的孩子去与他/她的父母:)Python/Django复杂/嵌套查询
这里是我的模型:
class Quarter(models.Model):
name = models.CharField(max_length=64, choices=QUARTER, default='not defined')
class Pground(models.Model):
place = models.CharField(max_length=128)
description = models.TextField()
quarter = models.ForeignKey(Quarter)
class Child(models.Model):
name = models.CharField(max_length=128)
age = models.IntegerField(choices=AGE, default=-1)
sex = models.IntegerField(choices=SEX, default=1)
whose_child = models.ForeignKey(User)
class Parent(models.Model):
user = models.OneToOneField(User)
quarter = models.ForeignKey(Quarter)
children = models.ManyToManyField(Child)
class Visit(models.Model):
who = models.ForeignKey(User)
pground = models.ForeignKey(Pground)
time_from = models.DateTimeField()
time_to = models.DateTimeField()
及相关视图进入到现在这样的:
class HomeLogView(LoginRequiredMixin, View):
login_url = '/login/'
def get(self, request):
user = request.user
quarter = user.parent.quarter
pgrounds = quarter.pground_set.all()
current_visits = {}
for pground in pgrounds:
now = datetime.now()
current_visits[pground] = pground.visit_set.filter(time_from__lte=now, time_to__gte=now)
current_visits[pground] = {}
this_visits = pground.visit_set.filter(time_from__lte=now, time_to__gte=now)
for visit in this_visits:
current_visits[pground][visit] = Child.objects.filter(whose_child=visit.who)
this_children = Child.objects.filter(whose_child=visit.who)
ctx = {'user': user, 'quarter': quarter, 'pgrounds': pgrounds, 'current_visits': current_visits, 'this_visits': this_visits, 'this_children': this_children}
return TemplateResponse(request, 'home_login.html', ctx)
因此,与模板(部分):
<dt>{% for pground, current_visits in current_visits.items %}
<dd><h3>{{pground.place}}</h3></dd>
{% for visit in current_visits %}
<dd>Użytkownik: <mark>{{visit.who}}</mark> na placyku od: {{visit.time_from}}
do: {{visit.time_to}} {{visit.pground}} <a href="/new_message/{{visit.who.id}}">Send message</a></dd>
{% for visit, this_visits in current_visits.items %}
{% for child in this_visits %}
{{child.name}} {{child.age}}
{% endfor %}
{% endfor %}
{% endfor %}
{% endfor %}
</dt>
我有一整套的孩子在每次参观的特定游乐场都有礼物。但我的目标是以这种模式显示信息:对于每次“当前访问”,以父母,他/她的孩子/孩子为基础。
我会很感激一条忠告,告诉我如何从被卡住的地方搬走。预先感谢您的帮助!
根据当前的模型设计,假设某个特定父母的所有孩子都在操场中。如果不是那么你现在的模型结构就不能处理这个。 –
让孩子也是一个用户来捕获孩子的访问,而不是父母。 –
非常感谢您的回答。你是对的,最终应该有选择选择哪个孩子/孩子在操场上与其父母。但在这个阶段,我不打算这样做,我只想展示一个特定用户的孩子/全套儿童,这个孩子有一次“当前访问”。 – berek