我正在try 渲染多对多关系的标签,但我错过了一些东西
这些是我的模型:
class Post(models.Model):
date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='posts', null=True, blank=True)
title = models.CharField(max_length=200)
content = models.TextField(null=True, blank=True)
image = models.ImageField(upload_to='post/images/', null=True, blank=True)
slug = models.SlugField(max_length=200, unique=True, null=True, blank=True)
tag = models.ManyToManyField('Tag', related_name='posts', blank=True)
def save(self, *args, **kwargs):
if self.image:
ext = os.path.splitext(self.image.name)[1]
filename = f"{datetime.now().strftime('%Y%m%d%H%M%S')}{ext}"
self.image.name = filename
if not self.slug:
self.slug = slugify(self.title)
return super().save(*args, **kwargs)
class Tag(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique=True, blank=True)
post = models.ManyToManyField(Post, related_name='tags', blank=True)
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.name)
return super().save(*args, **kwargs)
def __str__(self):
return self.name
这是我的模板片段
{% for post in posts %}
<div class="news-card">
<img src="{{post.image.url}}" class="news-img" alt="News" />
<div class="news-listing">
<ul class="tags">
{% for tag in post.tag.all %}
<li class="tag">{{tag.name}}</li>
{% endfor %}
</ul>
<h3 class="news-title">
<a href="{{post.slug}}"
>{{post.title}}</a
这是我正在传递的观点和背景
form = MessageForm()
context = {
'posts': posts,
'events': events,
'introductorys': introductory,
'products': products,
'form': form,
'authors': 'authors',
}
return render(request, 'app/index.html', context)
我期望生成标签列表,但模板没有生成任何标签