Django从不同层获取数据

时间:2018-10-15 04:39:32

标签: python django

我有一个Django项目,其结构如下:在主页上,有很多主题。在每个主题中,都有许多与之相关的条目。主题和条目信息可以是访问者的输入。现在,我需要按组从条目中获取数据。例如,对于主题“水果”,条目包括“苹果”,“梨”,“香蕉”;主题“运输”,条目包括“汽车”,“飞机”。

我需要获取的数据是:

[[(u'apple',), (u'pear',), (u'banana',)], [(u'car',), (u'plane',)]]. 

如何在view.py函数中编辑编码?我建议像这样:

def button_view(request):
    import sys
    topics = Topic.objects.filter(owner=request.user).order_by("date_added")
    a_content_list = []
    for a in topics
        entries = Entry.objects.get(topic = a)
        a_content_list.append(entries)

这是我在models.py中设置的内容:

class Topic(models.Model):
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)   
    def _str_(self):
        return self.text

class Entry(models.Model):
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    text = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)
    class Meta:
        verbose_name_plural = 'entries'

    def _str_(self):
        return self.text[:50] + "..."
        #on_delete=models.CASCADE,

a_content_list就是我想要的吗?

1 个答案:

答案 0 :(得分:0)

编辑:我误解了要求。

要获取条目列表的列表,每个列表都包含特定主题的条目:

entry_values = [
    [entry.value for entry in topic.entries.all()]
    for topic in Topic.objects.filter(owner=request.user).order_by("date_added")
]

这假设您已将ForeignKey的{​​{1}}定义中的related_name设置为“ entries”。