编写Python/Django视图以在三个模型/表之间“联接”

1 投票
2 回答
1620 浏览
提问于 2025-04-15 13:42

我刚开始接触Python/Django,遇到了一些问题:-)

我有一个model.py文件,内容是这样的:

from django.db import models

class Priority(models.Model):
    name = models.CharField(max_length=100)

class Projects(models.Model):
    name = models.CharField(max_length=30)
    description = models.CharField(max_length=150)
    priority = models.ForeignKey(Priority)

class Tasks(models.Model):
    name = models.CharField(max_length=30)
    description = models.CharField(max_length=40)
    priority = models.ForeignKey(Priority)

在优先级表里,我打算存储一些数据,比如1.高优先级,2.中等优先级,3.低优先级。而在任务表里,优先级会用ID来表示(1、2或3)。

我的问题是,怎么写一个视图来显示我所有的任务,并且把优先级的名字显示出来?比如:

name: Task 1

description: Description 1

priority: **High**

2 个回答

0

有很多方法可以实现你想要的功能。其中一种最简单的方法就是建立一个数字和字符串的对应关系,比如:1对应“高”,2对应“中”,3对应“低”。

把这个对应关系放在你的视图函数外面,这样你就可以在任何需要获取优先级的视图函数中访问它。

你也可以简单地写一个选择语句,来决定在模板中显示什么内容。

2

你的视图不需要做太多事情。

tasks = Tasks.objects.all()

把这个提供给你的模板。

然后你的模板可以做类似下面的事情。

{% for t in tasks %}
    name: {{t.name}}
    description: {{t.description}}
    priority: **{{t.priority.name}}**
{% endfor %}

撰写回答