Prakash Vegiraju
Prakash Vegiraju

Reputation: 89

why field name getting 'none' in django templates

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})

enter image description here

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

Answers (1)

Landcross
Landcross

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

Related Questions