【发布时间】:2013-05-16 13:00:38
【问题描述】:
我的 Django 模型中定义了多个相关表:
# first models.py
from django.db import models
class Character(models.Model):
first_field = models.DateTimeField()
second_field = models.TextField()
# second models.py
from django.db import models
class Op(models.Model):
fk_character = models.ForeignKey('Character')
some_field = models.DateTimeField()
other_field = models.TextField()
class Participant(models.Model):
fk_op = models.ForeignKey('Op')
fk_character = models.ForeignKey('Character')
some_other_field = models.IntegerField(default=0)
现在,我正在以如下方式将此数据从视图发送到模板:
# views.py
from django.shortcuts import render_to_response
from django.template import RequestContext
from second.models import MainModel
def home(request):
data = Op.objects.filter(some_field__isnull=True).order_by('-date')
rc = RequestContext(request, {'data':data})
return render_to_response('index.html', rc)
通过这种方式,我的index.html 模板中确实有我需要的所有Op 相关数据,但我在努力以特定方式在我的模板中显示这些数据的逻辑。例如:
- 显示所有
Ops的列表, - 对于每个列表项,检查
Character是否也是当前Op项中的Participant, - 如果不是,显示一些按钮,如果是,则不显示按钮
我知道模板不应该处理任何编程逻辑,但我也不确定解决这个问题的最佳方法是什么。我应该在我的视图中执行所有逻辑并构造一个新对象并将该对象发送到我的视图,还是有一种简单的方法可以在模板中使用我正在发送的当前对象解决这个问题?
【问题讨论】:
-
从您发布的内容来看,我看不出角色模型和参与者模型之间有任何联系,“角色也是参与者”是什么意思
-
“人物也是参与者”不是很清楚,这些似乎是完全不同的对象
-
啊,抱歉,我在
Participant模型中省略了一个字段。更新了我原来的帖子...
标签: python django django-templates django-views