我不想在Django中创建一个父子应用程序。 所以,让我解释一下我希望它如何工作。我看到了显示所有人类(父母和孩子)的视图。我单击它们中的任何一个,因此将打开一个不同的视图,其中显示了所有的孩子和父母。我可以单击其中的任何一个,然后为每个人看到相同的东西。
它只能这样工作:
SELECT CONCAT(CAST(Duration AS INT) DIV 86400,
':',
SEC_TO_TIME(CAST(Duration AS INT) MOD 86400));
但是Child与Parent不是同一个类,因此对于子对象我看不到相同的东西。 如果我这样继承它:
.row:before, row:after {
display: inline-block;
}
它不起作用。首先,它说我在尝试进行迁移时应该为parent_prt(或类似的东西)添加默认值。然后,如果我为他要求的字段添加默认值并进行迁移,则不会让我将其保存在db中。 因此,我想知道是否有一种方法,例如,在父查询集的每个元素中创建父查询集?
class Parent(models.Model):
...(name, etc.)
class Child(models.Model):
...(same fields)
field = ForeignKey(Human, on_delete='CASCADE') #something like this
或者您有什么建议?
答案 0 :(得分:0)
我会写评论,但是我没有足够的声誉(我是新来的)。除此之外,我还需要弄清楚你想做什么。
现在我想我明白你的意思了。 听起来您希望能够显示模板Parent
中(Child)
类的相关对象, ,但我不确定,因为您的观点之一似乎显示了所有父母和孩子。然后单击任何一个,然后希望它再次显示所有相同的人???如果清楚显示整个视图,URL模式和完整模型,将会很有帮助。无论哪种方式,您都可以找到documentation for that here,尽管我将用自己的示例来演示它,因为它们的布局不正确。它在模板中使用related-model_set
语法。
因此,在整个过程中,我将假设您想要我用黑体/斜体字表示的内容。但是在前面,如果我的假设是错误的,请指出您的代码中可能存在的错误:在您的Child模型中,您有一个Human
的外键,而不是Parent
...您是否有另一个名为Human
?还是您打算使每个Child
与一个Parent
相关,还是???您还没有完成python manage.py makemigrations
和python manage.py migrate
,因为您说过错误。
现在,这是我的回答,该如何做我以粗体/斜体表示的事情。
如果您希望每个孩子都与父母相关,那么您的模型应如下所示:
class Parent(models.Model):
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
class Child(models.Model):
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
# If the parent is deleted, all kids will be deleted too... Not realistic in real life, but I assume you'll apply this principle elsewhere, such as a Blog with Comments related to it.
parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
然后要在模板中显示孩子,假设您从管理面板添加了孩子和父母,您的视图将如下所示:
def all_parents_and_kids(request):
# to get related objects (Child), all you need to do is get the model they're related to (Parent)
all_parents = Parent.objects.all()
return render(request, 'all_people.html', {'all_parents': all_parents})
您的模板看起来像这样,但是您需要一些css才能使其比本示例更漂亮:
{% for parent in all_parents %}
<section style="border: 2px blue dashed;">
<h1>{{ parent.first_name }} {{ parent.last_name }}</h1>
<h2>Children of this parent:</h2>
<ul>
{% for child in all_parents.child_set %}
<li>{{ child.first_name }} {{ child.last_name }}</li>
{% endfor %}
</ul>
</section>
{% endfor %}
这就是您想要的吗?
如果是,请给我+号,以便希望在某些时候添加注释。如果没有,请说明您的需求。