Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将两个模型中的数据传递到一个html页面-Django_Django_Django Models_Django Views_Django Templates - Fatal编程技术网

将两个模型中的数据传递到一个html页面-Django

将两个模型中的数据传递到一个html页面-Django,django,django-models,django-views,django-templates,Django,Django Models,Django Views,Django Templates,我面临将两个模型中的数据显示到单个html页面的问题 我有两个模型-第一个叫课程,第二个叫课程好,所以我想添加课程,然后在课程中添加课程,并在一个html页面中显示数据 models.py: class Course(models.Model): title = models.CharField(max_length=100,default="") name = models.CharField(max_length=100,default="&qu

我面临将两个模型中的数据显示到单个html页面的问题

我有两个模型-第一个叫
课程
,第二个叫
课程
好,所以我想添加课程,然后在课程中添加课程,并在一个html页面中显示数据

models.py:

class Course(models.Model):
    title = models.CharField(max_length=100,default="")
    name = models.CharField(max_length=100,default="")
    app_contect = RichTextField(blank=True,null=True)
    app_image = models.ImageField(upload_to='images/',null=True, blank=True)
    post_date = models.DateTimeField(auto_now_add=True, null=True, blank=True)
    post_tag = models.CharField(max_length=50,default="",choices = COURSE_SECTION)
    objects = SearchManager()
    slug = models.SlugField(default="",blank=True,unique=True,editable=True)
    def save(self, *args, **kwargs):
        if not self.id or not self.slug:
            super(Course, self).save(*args, **kwargs)
            self.slug = slugify(f"{self.title} {str(self.id)}")
        super(Course, self).save(*args, **kwargs)

    def get_image(self):
        if self.app_image and hasattr(self.app_image, 'url'):
            return self.app_image.url
        else:
            return '/path/to/default/image'

    def __str__(self):
        return self.name

    class Meta:
        ordering = ('-post_date',)


class Lesson(models.Model):
    course = models.ForeignKey(Course, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    youtube_url = models.URLField()

    def __str__(self):
        return self.name
admin.py:

from django.contrib import admin
from blog_app.models import Course,Lesson

class InlineLessons(admin.StackedInline):
    model = Lesson

class CourseAdmin(admin.ModelAdmin):
    inlines = [ InlineLessons ]

admin.site.register(Lesson)
admin.site.register(Course,CourseAdmin)
那么,如何将课程和课程模型中的数据显示到一个html页面中呢

i tried do this but it's don't work , it just show data from Course model
views.py:

def course_posts(request,slug):
    lesson = Lesson.objects.all()
    course_posts = get_object_or_404(Course, slug=slug)
    context = {'course_posts':course_posts}
    return render(request,'course/course_posts_page.html', { 'course_posts': course_posts,'lesson':lesson })
html页面:

  <h1 id="font_control_for_header_in_all_pages"> {{course_posts.name}} </h1>

    <div id="accordion">
    <div class="card">
      <div class="card-header" id="headingOne">
        <h5 class="mb-0 text-center">
          <button class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
             {{lesson.name}}
          </button>
        </h5>
      </div>

      <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion">
        <div class="card-body">

          <iframe width="100%" height="400px" src="{{lesson.youtube_url}}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

        </div>
      </div>
    </div>
  </div>
{{course\u posts.name}
{{lesson.name}

这不起作用,它显示的是来自
课程
模型的数据,而不是来自课程和课程

看起来您希望显示与课程相关的所有课程,因此您应该修改视图以不进行课程查询


def课程单元帖子(请求,slug):
课程发布=获取课程对象或课程404(课程,slug=slug)
上下文={'course_posts':course_posts}
返回呈现(请求,'course/course\u posts\u page.html',{'course\u posts':course\u posts})

{{course_posts.name}
{课程中的课程%u posts.lesson\u set.all%}
{{lesson.name}
{%endfor%}

看起来您希望显示与课程相关的所有课程,因此您应该修改视图以不进行课程查询


def课程单元帖子(请求,slug):
课程发布=获取课程对象或课程404(课程,slug=slug)
上下文={'course_posts':course_posts}
返回呈现(请求,'course/course\u posts\u page.html',{'course\u posts':course\u posts})

{{course_posts.name}
{课程中的课程%u posts.lesson\u set.all%}
{{lesson.name}
{%endfor%}

课程
不是一个单一的
课程
对象,它是所有
课程
查询集
,因此是一个“集合”。好吧,我必须编辑的内容请您仔细阅读。到目前为止,您还没有接受关于许多问题的单一答案。它们对你不起作用吗?我尝试了下面的答案,效果很好,我接受了答案
课程
不是一个单一的
课程
对象,它是所有
课程
查询集
,因此是一个“集合”.好的,那么我必须编辑的内容请你仔细阅读。到目前为止,你在很多问题上还没有接受一个答案。他们不是为你工作吗?我尝试了下面的答案,效果很好,我接受了答案。非常感谢。这是一个完美的工作!只是你忘了在views.py这一行之前添加
lessource=lessource.objects.all()
course\u posts=get\u object\u或_404(course,slug=slug)不,我没有。我故意删除了这一行,因为它执行数据库查询而不被使用。你真的不需要做这个课程查询。当我删除
lesson=lesson.objects.all()
它显示错误,当我打开页面时,它说
名称'lesson'没有定义
,当我添加上一行时,它工作得很好@KokHyvv只需从上下文中删除
课程
——我复制了你的观点并错过了那一点,抱歉。哦,是的,别担心,谢谢你的帮助,它工作起来也很完美❤非常感谢,这是完美的工作!只是你忘了在views.py这一行之前添加
lessource=lessource.objects.all()
course\u posts=get\u object\u或_404(course,slug=slug)不,我没有。我故意删除了这一行,因为它执行数据库查询而不被使用。你真的不需要做这个课程查询。当我删除
lesson=lesson.objects.all()
它显示错误,当我打开页面时,它说
名称'lesson'没有定义
,当我添加上一行时,它工作得很好@KokHyvv只需从上下文中删除
课程
——我复制了你的观点并错过了那一点,抱歉。哦,是的,别担心,谢谢你的帮助,它工作起来也很完美❤