我是 Django 新手,很容易迷路。
我有这个包含项目的应用程序。它们被设置为具有父子关系的列表。
稍后我想显示附加到项目的任务。但现在。我什至不知道如何显示父子关系。
这是我的简单模型
class Item(models.Model):
item_title = models.Charfield()
item_parent = models.ForeignKey('self')
Run Code Online (Sandbox Code Playgroud)
我想将它们显示为:
Item 1
- item 2
- item 3
-- item 4
-- item 5
Item 6
- item 7
-- item 8
--- item 9
Run Code Online (Sandbox Code Playgroud)
我尝试过制作一个采用 Item.objects.all().order_by('item_parent') 的视图
并且模板带有 FOR - IN。但我不知道如何分开显示第一个父母然后是孩子,而另一个孩子则存在。
我只是设法按 item_parent 的顺序列出所有内容。这是不一样的。
感谢专家对像我这样的初学者的帮助。
我试图不在不同的模板上两次编写相同的代码.改变一些事情真的很麻烦.
因此,当我访问网页的某个部分时,我想显示一个侧边菜单.这个侧面菜单假设在几个模板上.像index.html,detail.html,manage.html等.
但该部分只是网页的一部分,所以我不能在base.html中使用它.
我在考虑使用include.但由于侧边菜单依赖于要生成的数据库查询,因此我必须对每个视图进行查询.这也使得冗余代码.
此功能的最佳做法是什么?
干杯!
我有一个外国人的模型.对于这个模型,我想将'def str '设置为用户.
我做到了这一点
from django.contrib.auth import get_user_model
User = get_user_model()
class Rosters(models.Model):
place = models.ForeignKey('Places')
position = models.ForeignKey('Positions', blank=True, null=True)
user = models.ForeignKey(User, related_name='roster')
validfrom = models.DateTimeField(blank=True, null=True)
validto = models.DateTimeField(blank=True, null=True)
def __str__(self):
return self.user
Run Code Online (Sandbox Code Playgroud)
这将获取用户名并显示在管理页面中.但是,当我尝试创建一个新的名册.我得到一个TypeError __str__返回非字符串(类型为User)
我可以删除'def str ...'并创建一个没有问题的名册.但每个名册在管理页面中显示为对象.所以我可以添加'def str ..'来查看每个名单的用户名.
我希望它们始终显示为用户名.当我添加名单时,我无法弄清楚为什么它不起作用.