为了账号安全,请及时绑定邮箱和手机立即绑定

Django-在模板中显示关系表的逻辑

Django-在模板中显示关系表的逻辑

喵喔喔 2021-03-16 17:37:26
我在Django模型中定义了多个相关表:# first models.pyfrom django.db import modelsclass Character(models.Model):    first_field = models.DateTimeField()    second_field = models.TextField()# second models.pyfrom django.db import modelsclass 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.pyfrom django.shortcuts import render_to_responsefrom django.template import RequestContextfrom second.models import MainModeldef 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)这样Op,我的index.html模板中确实有了我需要的所有相关数据,但是我在逻辑上苦苦挣扎,无法以特定的方式在模板中显示这些数据。例如:显示所有列表Ops,对于每个列表项,检查是否Character也是Participant当前Op项,如果不是,则显示一些按钮;如果不是,则显示按钮我知道模板不应该处理任何编程逻辑,但是我也不确定什么是解决此问题的最佳方法。我应该执行视图中的所有逻辑并构造一个新对象,然后将该对象发送到视图中,还是有一种简单的方法可以使用当前要发送的当前对象在模板中解决此问题?
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

更新您的模型:


class Op(models.Model):

    fk_character = models.ForeignKey('Character')

    some_field = models.DateTimeField()

    other_field = models.TextField()


    def check_if_participant(self):

        return bool(self.participant_set.all())

显示全部列表Ops:


{% for op in data %}

   {{op.some_field}}


   {% if op.check_if_participant %}Yes - Character is participant {% endif %}

{% endfor %}


查看完整回答
反对 回复 2021-03-24
  • 1 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号