簡體   English   中英

如何在ListView中顯示相關的一對多實例?

[英]How to display related One to Many Instances in ListView?

我想顯示所有屬於模型Report的實例 Referenced to Module referenced to model Course 因此,我通過外鍵實現了三個相關模型。

class Course(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=200, blank=True, null=True)
class Module(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=200, blank=True, null=True)
    course_id = models.ForeignKey(
        Course,
        null=True,
        on_delete=models.SET_NULL,
        related_name="modules",
        default=uuid.uuid4,
    )
class Report(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=200, blank=True, null=True)
    module_id = models.ForeignKey(
        Module,
        null=True,
        on_delete=models.SET_NULL,
        related_name="reports",
        default=uuid.uuid4,
    )

我想在CourseDetailView(DetailView):中顯示模型Course引用的模型Module

這是我實施的:

class CourseDetailView(DetailView):
    model = Course
    context_object_name = "course"
    template_name = "course/course_detail.html"
    fields = ["title", "description"]

    def get_context_data(self, **kwargs):
        context = super(CourseDetailView, self).get_context_data(**kwargs)
        context["courses"] = Course.objects.filter(pk=self.kwargs.get("pk"))
        return context

我得到了屬於它自己的實例。

如果我將context更改為:

context["modules"] = Module.objects.all()

並迭代course_detail.html中的modules

    {{ course.description|safe }}

    {% for module in modules %}
    <div>
        <h2><a href="{{ module.get_absolute_url }}">{{ modules.title }}</a></h2>
    </div>
    {% endfor %}

我將獲得 Module 的所有實例,但我只想要與特定課程相關的實例。

我知道我必須過濾context["modules"]但我不知道該怎么做。

由於我想在CourseDetailView中顯示模塊,因此我無法通過super(CourseDetailView, self).get_context_data(**kwargs)獲取module.pk

提前謝謝了

據我了解,您需要像 Module.objects.filter(course_id=id) 這樣的 smth,其中 id 是特定課程的 id。 這個查詢集是一個常見的情況。 正如您在對您的案例的評論中所說: Module.objects.filter(course_id=self.object)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM