簡體   English   中英

Django的。 通過字典中的模型進行迭代

[英]Django. Iterate by models in dictionary

我有兩個模型:

class Status(models.Model):

    CHOISES = (
        ('new', 'New'),
        ('in_progress', 'InProgress'),
        .....
    )

    status_type = models.CharField(
        max_length=11,
        choices=CHOISES,
        primary_key=True)

    def __unicode__(self):
        return str(self.status_type)


class Task(models.Model):

    name = models.CharField(max_length=200, blank=False)
    status = models.ForeignKey(Status)

這是我視圖的一部分,該視圖根據status模型返回帶有鍵的字典:

    all_tasks = Task.objects.select_related('status').order_by('status')
    tasks = {status: list(tasks)
         for status, tasks
         in itertools.groupby(all_tasks, lambda x: x.status)
    }

這是字典中查看功能返回的一部分:

{<Status: new>: [<Task: Task object>, <Task: Task object>],
 <Status: in_progress>: [<Task: Task object>,<Task: Task object>],...}

我需要按5個status列將模板中的所有tasks模型分組。
所以我用這個電話:

    {% for item in tasks.new %}
        {{ item.name }}
    {% endfor %}

它不起作用,因為我無法通過status對象名稱從字典中獲取值。
問題是如何通過模板中的dict鍵按status對象進行迭代?

我不確定僅使用狀態模型來存儲一個字段有什么意義。 為什么不將其保留在Task中,並在那里定義選擇呢?

不過,您可以通過按x.status.status分組來解決當前的問題,以使用實際的charfield值而不是其包含的模型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM