python-Django ManyToMany模板问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-Django ManyToMany模板问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2009字,纯文字阅读大概需要3分钟。
内容图文
![python-Django ManyToMany模板问题](/upload/InfoBanner/zyjiaocheng/651/ac688c511d894e708c31db5d8d864587.jpg)
大家早上好,
我担任PHP程序员已有一段时间了,但是我感到有必要朝Python方向发展,这比与Django玩得更好.
在此过程中,我到达了一个停顿,我知道这里有一个简单的解决方案,但是我只是想念它-如何在Django模板中显示许多关系?
我的Django模型:(大多数字段已删除)
class Category(models.Model):
name = models.CharField(max_length=125)
slug = models.SlugField()
categories = models.ManyToManyField(Category, blank=True, null=True)
class Recipe(models.Model):
title = models.CharField('Title', max_length=250)
slug = models.SlugField()
class Photo(models.Model):
recipe = models.ForeignKey(Recipe)
image = models.ImageField(upload_to="images/recipes", blank=True)
因此,我在应用程序中使用的基本模型称为“配方”.
话虽如此,我正在寻找两个问题的答案:
>如何在详细信息页面上显示食谱的类别?
>如何在详细信息页面上显示配方的图像?
如果我进入Python shell,并输入以下内容,则会得到结果:
>>> photos = Photo.objects.filter(recipe=1)
>>> photos
[<Photo: Awesome Pasta>]
>>> for photo in photos:
... print "Photo: %s" % photo.logo
...
Photo: images/recipes/2550298482_46729d51af__.jpg
但是,当我在模板中尝试以下操作时,出现错误消息“无效的块标签:’photo.image’.”
{% for photo in photos %}
{% photo.image %}
{% endfor %}
尽管即使这样做确实有效,但ID仍被硬编码到视图中,但您将如何对每个配方进行动态调整呢?
详细信息页面View.py片段:
def details(request, slug='0'):
p = get_object_or_404(Recipe, slug=slug)
photos = Photo.objects.filter(recipe=1)
return render_to_response('recipes/recipes_detail.html', {'p': p, 'photos': photos})
在此先感谢您的帮助和理解,这可能对大家来说是一个非常简单的问题!
更新:删除模型中的其他字段时,我忘记了配方模型的类别字段.
解决方法:
从我所看到的,我认为您有一个小的语法错误:
{% photo.image %}
相反,应为:
{{ photo.image }}
{%%}表示法用于Django模板标签.另一方面,变量用{{}}表示法表示.
要使其动态化,您可以利用照片模型具有配方的外键这一事实.这意味着从您使用子弹加载的Recipe实例到照片集之间存在反向关系:
def details(request, slug='0'):
p = get_object_or_404(Recipe, slug=slug)
photos = p.photo_set.all()
希望这对您有用.很高兴看到您喜欢与Django合作!
内容总结
以上是互联网集市为您收集整理的python-Django ManyToMany模板问题全部内容,希望文章能够帮你解决python-Django ManyToMany模板问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。