Как добавить поле тега в Django? - PullRequest
0 голосов
/ 06 ноября 2019

Здесь у меня есть некоторая модель, и у этой модели должны быть некоторые теги, чтобы сделать ее оптимизированной для SEO. Для этого, как я могу разработать свою модель?

Буду признателен за любые предложения или помощь.

моя модель

class TourPackage(models.Model):
    name = models.CharField(max_length=255)
    package_detail = models.TextField()
    image = models.ImageField()
    booking_start = models.DateTimeField()
    booking_end= = models.DateTimeField()
    package_start = models.DateTimeField()
    #how  can i save this tag field for seo purpose
    #tag = models.CharField()

Ответы [ 2 ]

3 голосов
/ 06 ноября 2019

Я советую использовать пакет, как, например, django-taggit [GitHub] , это реализует поле «многие ко многим», но с некоторыми дополнительными инструментами длясделать управление тегами более удобным.

Вы можете установить пакет, например, с помощью менеджера пакетов pip в вашей виртуальной среде:

pip install <b>django-taggit</b>

В вашем settings.py вы затем добавите 'taggit' к INSTALLED_APPS:

# settings.py

# &hellip;

INSTALLED_APPS = [
    # &hellip;,
    <b>'taggit',</b>
    # &hellip;,
]

Затем вы можете добавить TaggableManager к вашей модели:

from taggit.managers import <b>TaggableManager</b>

class TourPackage(models.Model):
    name = models.CharField(max_length=255)
    package_detail = models.TextField()
    image = models.ImageField()
    booking_start = models.DateTimeField()
    booking_end = models.DateTimeField()
    package_start = models.DateTimeField()

    tag = <b>TaggableManager()</b>

Конечно, это будет не добавитьтеги на страницу. Вам нужно будет добавить <meta> теги в свои шаблоны для добавления метаинформации.

1 голос
/ 06 ноября 2019

Если я правильно вас понял, вы можете использовать отношения «многие ко многим» в соответствии с документом . Но это подразумевает, что каждая модель TourPackage может иметь много тегов против одного, как в вашем примере.

Вы должны использовать что-то вроде этого

class Tag(models.Model):
    name = models.CharField(max_length=255)             

class TourPackage(models.Model):
    name = models.CharField(max_length=255)
    package_detail = models.TextField()
    image = models.ImageField()
    booking_start = models.DateTimeField()
    booking_end= = models.DateTimeField()
    package_start = models.DateTimeField()
    #how  can i save this tag field for seo purpose
    tags = models.ManyToManyField('Tag')

А потом

tp = TourPackage(...)
tag1 = Tag.objects.create(name='tag1')
tag2 = Tag.objects.create(name='tag2')
tp.tags.add(tag1)
tp.tags.add(tag1)
tp.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...