Атрибут Django ForaignKey не отображается в html

Итак, у меня есть несколько моделей, связанных между собой. И в моих представлениях я получаю модели глав, упорядоченные по дате публикации, затем удаляю те, в которых есть та же манга (по ключу, связанному с другой моделью). Но, очевидно, для полей, не связанных ни с чем, я не могу получить доступ к полям моделей. Но также, поскольку я работаю с quaryset, я не могу сортировать по id или чему-либо еще, также нужно получить доступ к полям моделей манги, связанным с главой. но это не отображается в html. как я могу это сделать?

мои модели :

 class Manga(models.Model):
    manga_name = models.CharField(max_length= 255, default="null")
    manga_image = models.ImageField(upload_to="thumbnail", default="thumbnail/noimage.png")
    manga_views=models.IntegerField(default=0)

    def __str__(self):
        return f"{self.id}, {self.manga_name}"
        

class Fansub(models.Model):
    fansub_name = models.CharField(max_length=255, default="null")

    def __str__(self):
        return f"{self.id}, {self.fansub_name}"

class Chapter(models.Model):
    chapter_number = models.IntegerField(default=0)
    chapter_url = models.URLField(default="www.example.com")
    manga = models.ForeignKey(Manga, on_delete=models.CASCADE)
    fansub = models.ForeignKey(Fansub, on_delete= models.CASCADE)
    relase_date= models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.chapter_number}, {self.manga}, {self.fansub}"

Мое мнение :

def Index(request):
manga = Manga.objects.all()
chapter = Chapter.objects.all().values()
fansub = Fansub.objects.all().values()

mostview = manga.order_by("-manga_views")[:5]

relasedateorder = chapter.order_by("relase_date")



context= {
    "Manga": manga,
    "Chapter": chapter,
    "Fansub": fansub,
    "Mostview": mostview,
    "LastUpdated": relasedateorder,
}

template = loader.get_template("Index.html")

и, наконец, html:

{%for d in LastUpdated%}
    <p>{{d.manga}}</p>
{%endfor%}

В вашем представлении вы используете метод values для кверисета Chapter, который возвращает кверисет словарей вместо объектов Chapter. Чтобы получить доступ к связанному объекту Manga, вам нужно изменить представление, чтобы оно возвращало кверисет объектов Chapter следующим образом:

def Index(request):
    manga = Manga.objects.all()
    chapter = Chapter.objects.all().order_by("relase_date")
    fansub = Fansub.objects.all().values()

    mostview = manga.order_by("-manga_views")[:5]

    context= {
        "Manga": manga,
        "Chapter": chapter,
        "Fansub": fansub,
        "Mostview": mostview,
    }

    template = loader.get_template("Index.html")

#HTML

{% for chapter in Chapter %}
    <p>{{chapter.manga.manga_name}}</p>
{% endfor %}

Вы можете получить доступ ко всем экземплярам модели Manga, связанным с экземпляром chapter, используя _set в качестве суффикса следующим образом:

{% for i in LastUpdated %}
    <p>{{i.chapter_number}}</p>
    <h2> manga model attributes below</h2>
    {% for j in i.manga_set.all %}
        {{j.manga_name}}
        {{j.manga_views}}
    {% endfor %}    
{% endfor %}

Также вы должны использовать Chapter.objects.all().order_by("relase_date") этот кверисет, так как использование .values() дает вам пару ключ-значение (dict).

Вернуться на верх