0

私はdjangoアプリに問題があります:

class Module(models.Model):
    requirements = models.ManyToManyField("self", related_name='wym', symmetrical=False)
    status = ''

class EndedModules(models.Model):
    user = models.ForeignKey('auth.User')
    module = models.ForeignKey('Module')
    end_time = models.DateTimeField(blank=True, null=True)

そしてビューで:

modules = Module.objects.all()
for module in modules:
    try:
        exist = EndedModules.objects.get(user=request.user,module=module)
        if exist.end_time:
            module.status = 'ended'
        else:
            module.status = 'started not ended'
    except:
        module.status = 'not exist'

しかし、テンプレートに表示しようとすると:

{% for module in modules %}
    {% for element in module.requirements.all %}
        {{ element.status }}
    {% endfor %}
{% endfor %}

動いていない。

これを行う別の方法はありますか?

私はモデルでこれを試みましたが、request.userにアクセスできません

ありがとう!

4

1 に答える 1

0

テンプレート内のまったく異なるデータ セットを繰り返し処理しながらstatus、最初のループで属性を設定しています ( )。modulerequirements.all

modulesテンプレート コンテキストに渡すと仮定すると、ビューによると、外側のmoduleループに属性を設定しましたが、内側のelementループには設定しませんでした。外側のループ{{ module.status }}は、テンプレートに対応しています。

{{ element.status }}新しく作成されたクエリセットを反復処理しており、クラス定義にあるものを反映しますstatus = ''

{% for module in modules %}
    {% for element in module.requirements.all %}
        {{ element.status }}
        <!-- ^^^ this doesn't have a status value - only {{ module.status }} -->
    {% endfor %}
{% endfor %}
于 2013-06-07T00:48:16.833 に答える