Reputation: 89
I created templates page and retrieving data from the model for one field I am getting none and displays Class name of the model,
template code:
{% for abc in events %}
<div>
<h2><a href="">{{ abc.event_title }}</a></h2>
<p>published: {{ abc.event_release_date }}</p>
<p>{{ abc.event_description|linebreaksbr }}</p>
{{% for author in abc.event_author.all %}}
<p>{{ author }}</p>
{{% endfor %}}
</div>
{% endfor %}
View code:
def index(request):
return render(request, 'polls/home.html', {})
"model class name and function name should not be samm"
def Event(request):
events=Events.objects.all()
return render(request, 'polls/events.html', {'events':events})
Models code is mentioned below:
class Author(models.Model):
author_name=models.CharField(max_length=300)
def __str__(self):
return self.author_name
class Events(models.Model):
event_author=models.ManyToManyField(Author)
event_title=models.CharField(max_length=300)
event_title_image = models.ImageField(upload_to='images/', blank=True, null=False)
event_description=models.TextField(blank = True)
event_image_description = models.ImageField(upload_to='images/', blank=True,)
event_release_date = models.DateField(null="false")
def __str__(self):
return self.event_title
def publish(self):
self.event_release_date = timezone.now()
self.save()
litle changes are done in template code
Upvotes: 0
Views: 257
Reputation: 492
event_author is a manytomanyfield, that means that event_author itself is not something that can be displayed in the template. You need to loop through the manytomany field like so:
{% for author in abc.event_author.all %}
<p>{{author}}</p>
{% endfor %}
A full example would be:
{% for abc in events %}
<div>
<h2><a href="">{{ abc.event_title }}</a></h2>
<p>published: {{ abc.event_release_date }}</p>
<p>{{ abc.event_description|linebreaksbr }}</p>
{% for author in abc.event_author.all %}
<p>{{author}}</p>
{% endfor %}
</div>
{% endfor %}
Upvotes: 2