从sqlite数据库django项目

时间:2017-02-07 21:44:19

标签: django if-statement for-loop django-views

最近我开始学习编程,无法解决一个问题。我知道我做错了什么,任何人都可以帮助我。 我有文章模型,通过foreingkey连接到vipusk。 vipusk也通过外键连接到Year模型。最重要的是年份模型。

我在我的数据库中创建了几篇文章,随机安装了vipusks和一些Year。 当我试图直接从数据库获取它我只得到其中一些,我的意思是一年包含几个vipusks,当我试图显示vipusks的数量时,我只有2个。但我知道其中一年包含4个vipusks。我认为问题出在视图的某个地方。但我不知道如何解决它

这是我的viev字段:

def arkchive(request):
    latest_year = YearPub.objects.all().order_by('year_alias')
    for i in latest_year:
        latest_vipusks = Vipusk.objects.filter(vipusk_year=latest_year).order_by('id')
        for j in latest_vipusks:
            articles = Article.objects.filter(article_vipusk=latest_vipusks).order_by('id')

    args = {}
    args['years'] = latest_year 
    args['vipusks'] = latest_vipusks 
    args['articles'] = articles 
    return render_to_response('arkchive.html', args)enter code here

这就是我想在模板中得到的内容

{% for year in years %}
    {{year.yearpub_int}}
    {% for vipusk in vipusks %}
        <a class='title_vipusk'>{{vipusk.vipusk_int}}</a>
        {% for article in articles %}
            <a class='title_article'>{{article.vipusk_name}}</a>
        {% endfor%}
    {% endfor %}
{% endfor %}

1 个答案:

答案 0 :(得分:0)

我猜你要做的是这样的事情:

def arkchive(request):
    years = {}
    for year in YearPub.objects.all().order_by('year_alias'):
        years[year.yearpub_int] = {}
        for vipusk in Vipusk.objects.filter(vipusk_year=year).order_by('id'):
            years[year.yearpub_int][vipusk_int] = Article.objects.filter(article_vipusk=latest_vipusks).order_by('id')

    return render_to_response('arkchive.html', {'years': years})enter code here

模板:

{% for year, vipusks in years.items %}
    {{year}}
    {% for vipusk, articles in vipusks.items %}
        <a class='title_vipusk'>{{vipusk}}</a>
        {% for article in articles %}
            <a class='title_article'>{{article.vipusk_name}}</a>
        {% endfor%}
    {% endfor %}
{% endfor %}