Django need first paragraph

Viewed 113

I created model with my posts. file blog/models.py:

import datetime

from ckeditor.fields import RichTextField
from django.db import models


class Post(models.Model):
    name = models.CharField(max_length=250)
    content = RichTextField()
    date = models.DateField(default=datetime.date.today)

and in db i has this record:

<p>First paragraph</p>

<p>Second paragraph</p>

<p>Third paragraph</p>

<p>etc</p>

<p>...</p>

How I can get result First paragraph ONLY

1 Answers

You could work with BeautifulSoup and make a property that will return the HTML content of the first paragraph. You first install beautifulsoup with:

pip3 install beautifulsoup4

then we can define a property that implements logic to extract the first <p> tag:

from bs4 import BeautifulSoup

class Post(models.Model):
    name = models.CharField(max_length=250)
    content = RichTextField()
    date = models.DateField(auto_now_add=True)

    def first_paragraph(self):
        bs = BeautifulSoup(self.content)
        return str(bs.find('p'))
Related