Python 在Django中显示许多字段和外来字段的内容
我是Django的新手,我正在构建一个基本的博客应用程序。 我无法在我的详细信息页面中显示多个字段(标记中)和一个外键字段(注释) models.pyPython 在Django中显示许多字段和外来字段的内容,python,django,django-templates,django-views,Python,Django,Django Templates,Django Views,我是Django的新手,我正在构建一个基本的博客应用程序。 我无法在我的详细信息页面中显示多个字段(标记中)和一个外键字段(注释) models.py class BlogContent(models.Model): title = models.CharField(max_length=200) author = models.CharField(max_length=200) content = models.TextField() date_publishe
class BlogContent(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=200)
content = models.TextField()
date_published = models.DateField(auto_now=True)
image = models.ImageField(upload_to='media/')
def __str__(self):
return self.title
class TagName(models.Model):
tag = models.ManyToManyField(BlogContent, null=True)
name = models.CharField(max_length=100, blank=True, null=True)
def __str__(self):
return self.name
class Comment(models.Model):
comt_text = models.TextField()
comments = models.ForeignKey(BlogContent, on_delete=models.CASCADE)
date_published = models.DateField(auto_now=True)
name = models.CharField(max_length=200, blank=True, null=True)
def __str__(self):
return self.name
views.py
def details(request, blogcontent_id):
data_blog = get_object_or_404(BlogContent, pk=blogcontent_id)
data_tag = get_object_or_404(TagName, pk=blogcontent_id)
data_comment = Comment.objects.select_related()
return render(request, 'details.html',
{'data_blog': data_blog, 'data_tag':data_tag, 'data_comment':data_comment})
details.html
{% extends 'base.html' %}
{% block body_base %}
<img class="card-img-top img-responsive" src={{ data_blog.image.url }} alt="Card image cap">
<h2 class="blog-post-title">{{ data_blog.title }}</h2>
<p class="blog-post-meta">{{ data_blog.date_published }} {{ data_blog.author }}</p>
<p>{{ data_blog.content }}</p>
{% endblock %}
{%extends'base.html%}
{%block body_base%}
{{data_blog.title}
{{data_blog.date_published}{{data_blog.author}
{{data_blog.content}
{%endblock%}
在此之后,如何显示foreignkey和ManayTo多个域?TBH如果使用基于类的视图,这将更容易 这种观点只会是:
class BlogContentDetail (DetailView):
model = BlogContent
url调用将是url(r'^blog detail/(?p\d+)/$,BlogContentDetail.as\u view(),name=“blog\u detail”)
您的html文件应称为blogcontent\u detail.html
,并保存在templates文件夹的app子文件夹中
然后,模板将是:
{% extends 'base.html' %}
{% block body_base %}
<img class="card-img-top img-responsive" src={{ object.image.url }} alt="Card image cap">
<h2 class="blog-post-title">{{ object.title }}</h2>
<p class="blog-post-meta">{{ object.date_published }} {{ object.author }}</p>
<p>{{ object.content }}</p>
{% for tag in object.tags_set.all %}{{ tag }}{% endfor %}
{% endblock %}
{%extends'base.html%}
{%block body_base%}
{{object.title}}
{{object.date_published}{{{object.author}}
{{object.content}
{%for object.tags_set.all%}{{tag}}{%endfor%}
{%endblock%}
您可以用这种方式迭代多个字段{%用于数据中的标记\u tag.tag.all%}
{{tags}
{%endfor%}
外键
{{data\u comment.comments}}
不工作。我得到这个错误。“'ManyRelatedManager'对象不可编辑”Try data_tag.tag.all