首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django嵌套内联TemplateDoesNotExist

Django嵌套内联TemplateDoesNotExist
EN

Stack Overflow用户
提问于 2015-02-25 22:07:31
回答 2查看 1.8K关注 0票数 5

误差

我正在尝试使用django-嵌套-内联包。看起来一切都正常,但是当我尝试用管理网站创建一个新的Course时,我会得到以下错误:

代码语言:javascript
复制
TemplateDoesNotExist at /admin/courses/course/5/

admin/edit_inline/stacked-nested.html

但是当然,admin/edit_inline/stacked-nested.html并不存在,因为在模板呈现过程中出现了一个错误:

代码语言:javascript
复制
Error during template rendering

In template C:\...\django\contrib\admin\templates\admin\change_form.html, error at line 62

admin/edit_inline/stacked-nested.html

60 {% block inline_field_sets %}
61 {% for inline_admin_formset in inline_admin_formsets %}
62     {% include inline_admin_formset.opts.template %}
63 {% endfor %}
64 {% endblock %}

如您所见,当Django试图呈现

{% include inline_admin_formset.opts.template %}

我的密码

这是我的admin.py,但我不认为它与上述错误有任何关系:

代码语言:javascript
复制
from django.contrib import admin
from nested_inline.admin import NestedStackedInline, NestedModelAdmin
from courses.models import Course, Skill, Note

class NoteInline(NestedStackedInline):
    model = Note
    extra = 0

class SkillInline(NestedStackedInline):
    model = Skill
    extra = 0
    inlines = [NoteInline]

class CourseAdmin(NestedModelAdmin):
    inlines = [SkillInline]

admin.site.register(Course, CourseAdmin)

这是我的models.py

代码语言:javascript
复制
from django.db import models

class Course(models.Model):
    course_name = models.CharField(max_length=200)
    course_description = models.CharField(max_length=1000, default='Course Description')
    course_subject = models.CharField(max_length=200, default='No Subject')

    def num_skills(self):
        return len(self.skill_set.all())

    def __unicode__(self):
        return self.course_name

    def __str__(self):
        return unicode(self).encode('utf-8')

class Skill(models.Model):
    course = models.ForeignKey(Course)
    skill_name = models.CharField(max_length=200)
    skill_description = models.CharField(max_length=1000, default='Skill Description')

    def __unicode__(self):
        return self.skill_name

    def __str__(self):
        return unicode(self).encode('utf-8')

class Note(models.Model):
    skill = models.ForeignKey(Skill)
    note_text = models.CharField(max_length=1000, default='...note text...')

    def __unicode__(self):
        return self.note_text

    def __str__(self):
        return unicode(self).encode('utf-8')

我注意到的事情

  • 两天前django-嵌套-内联从0.3.3更新到0.3.4。更新后的版本“添加了许可证,并更新了python 3”。我使用的是0.3.4,但也使用Python 2.7,而不是Python 3。然而,我卸载了0.3.4,安装了0.3.3,然后再试一次。这不起作用,也产生了同样的错误。我已经卸载了0.3.3并重新安装了0.3.4。
  • 当我试图通过管理站点添加一个新的Course时,管理站点和站点本身不会崩溃。
EN

回答 2

Stack Overflow用户

发布于 2015-02-26 03:24:21

看起来您的nested_inline应用程序没有安装,或者django可以找到模板。或者将模板添加到TEMPLATE_DIRS设置引用的目录中,或者更改内联的模板名。

按照您提供的链接中的用法:将nested_inline添加到INSTALLED_APPS

票数 6
EN

Stack Overflow用户

发布于 2022-09-07 21:25:33

为了完成ESPmorph的回答:

您需要在TEMPLATE_DIRS列表中添加希望使用模板的所有应用程序,如下所示:

代码语言:javascript
复制
INSTALLED_APPS = [
    'django.contrib.admin',
    ...
    "nested_inline",
]

django-嵌套-内联文档中指出了这一点:

用法:将nested_inline添加到INSTALLED_APPS

您需要对您自己的所有定制应用程序和所有第三方应用程序这样做,例如使用django-嵌套内联(add nested_inline)或django-多态(添加多态)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28730591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档