简单模型模板通过外键访问?我错过了什么?

时间:2019-02-08 22:14:12

标签: django django-models django-templates django-views

我正在django 2.1.5中测试不同的视图和模型。

我在模板中制作了两个简单的模型和一个简单的查看功能,用于按歌手访问专辑。到目前为止,我只看到艺术家的姓氏。

我尝试通过 {%object_list.album_set.all%}中的相册访问相册模型,但没有任何反应,我想我有什么事。我在网上搜索以帮助自己,但大多数教程仅在pyhton shell中显示django示例。有人提到还要给带有FKey的模型一个related_name,所以我以一个数据字段命名它。

每一个提示,谢谢

models.py

class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
person_pic = models.ImageField(upload_to='artist/', max_length=255, null=True, blank=True )

def __str__(self):
    return "{} - {}".format(self.car[:25], self.color[:25])

class Album(models.Model):
    albumname = models.CharField(max_length=255)
    artistkey = models.ForeignKey(Person, on_delete=models.CASCADE, null=True, related_name="albumname")

 def __str__(self):
        return self.albumname

views.py

def artist_page(request):
object_list = Person.objects.all()
context = {'object_list': object_list}
return render(request, 'aquaman/aquaforkey.html', context)

aquaforkey.html

{% block content %}

<h1>HELLO</h1>

  {% for artist in object_list %}
     <h1> {{ artist.last_name }}</h1>
       {% for album in object_list.album_set.all %}
      {{ album.albumname }}
    {% endfor %}
  {% endfor %}
{% endblock %}

1 个答案:

答案 0 :(得分:4)

这里有几个问题。该项目是artist,而不是object_list。并且您已将related_name设置为albumname

{% for album in artist.albumname.all %}

(顺便说一下,那些告诉您更改related_name的帖子是错误。只有在您有充分理由的情况下才进行更改。)