Python 在列表视图中获取Django模型以显示两者

Python 在列表视图中获取Django模型以显示两者,python,django,listview,foreign-keys,django-queryset,Python,Django,Listview,Foreign Keys,Django Queryset,我有以下型号: 第条: class Article(models.Model): sku = models.CharField( max_length=5, primary_key=True, validators=[MinLengthValidator(5)] ) ean = models.CharField( max_length=13, unique=True, vali

我有以下型号:

第条:

class Article(models.Model):
    sku = models.CharField(
        max_length=5,
        primary_key=True,
        validators=[MinLengthValidator(5)]
    )
    ean = models.CharField(
        max_length=13,
        unique=True,
        validators=[MinLengthValidator(13)]
    )
    parent = models.ForeignKey(
        'Article',
        related_name='children',
        null=True,
        blank=True,
        on_delete=models.PROTECT
    )
...
和翻译:

class ArticleTranslation(models.Model):
    LANGUAGE_CHOICES = (
        (settings.ENGLISH, _("english")),
        (settings.FRENCH, _("french")),
        (settings.GERMAN, _("german")),
        (settings.ITALIAN, _("italian")),
        (settings.PORTUGUESE, _("portuguese")),
        (settings.SPANISH, _("spanish")),
    )
    article = models.ForeignKey(
        'Article',
        on_delete=models.CASCADE,
        related_name='translations',
    )
我需要同时返回这两个项目,以在Django模板HTML中显示这两个项目。需要有项目和外键,并在相同的迭代中查看它。我想用类列表视图和django的方法来做,但不要做坏事。 我有这个列表视图:

    def get_queryset(self):
        queryset = (Article.objects
                    .all()
                    .prefetch_related('translations')
                    .order_by('-sku'))

        print(queryset)

        return queryset
在我的HTML中,需要显示外键值:

{% extends "base.html" %}

{% block content %}

    {% for article in article_list %}
        <div class="container">
            <h2>{{ article.translations.NEED_TO_SHOW_THAT_PARAMETER }}</h2>
        </div>
    {% endfor %}


{% endblock content %}
{%extends“base.html”%}
{%block content%}
{文章列表%中的文章为%0}
{{article.translations.NEED__TO_SHOW_THAT_PARAMETER}}
{%endfor%}
{%endblock内容%}

在您的视图中,您已经获得了正确的数据。因此,在模板中,您可以简单地循环浏览
文章
对象及其外键值(因为它们可以使用
相关的\u name
访问)

您使用的是
{%for article\u list%}
因此我相信您在视图中设置了
上下文\u对象\u名称='article\u list'

我猜您可能想访问
翻译
模型的额外字段。如果您的模型看起来像这样:

class ArticleTranslation(models.Model):
    LANGUAGE_CHOICES = (
        (settings.ENGLISH, _("english")),
        (settings.FRENCH, _("french")),
        (settings.GERMAN, _("german")),
        (settings.ITALIAN, _("italian")),
        (settings.PORTUGUESE, _("portuguese")),
        (settings.SPANISH, _("spanish")),
    )
    article = models.ForeignKey(
        'Article',
        on_delete=models.CASCADE,
        related_name='translations',
    )
    language = models.CharField(max_length=10, choices=LANGUAGE_CHOICES)
然后在模板中,您可以执行以下操作:

{% extends "base.html" %}

{% block content %}
    {% for article in article_list %}
        <div class="container">
            {% for object in article.translations.all %}
                <h2>Chosend language - {{ object.language }}</h2>
            {% endfor %}
        </div>
    {% endfor %}

{% endblock content %}
{%extends“base.html”%}
{%block content%}
{文章列表%中的文章为%0}
{%用于article.translations.all%中的对象}
Chosend语言-{object.language}
{%endfor%}
{%endfor%}
{%endblock内容%}
说明:
article.translations.all
将为您提供一篇
文章的所有翻译,使用它您可以获得字段值

{code>{{article.translations.all}}
是模板中
翻译的列表(相当于python代码中的
article.translations.all()
)。因此,您可以循环使用它,例如,..g
{%for translation in article.translations.all%}
并在循环中显示您想要的任何内容,例如
{{translation.id}