I am trying to create hierarchical tags for my Django blog project using django-taggit and django-treebeard. However, I am encountering issues with the creation of the relational tables.
Here is my models.py file:
from django.db import models
from django.contrib.auth.models import User
from django.template.defaultfilters import slugify
from taggit.models import TagBase, ItemBase
from taggit.managers import TaggableManager
from treebeard.mp_tree import MP_Node
class Tag(TagBase, MP_Node):
name = models.CharField(max_length=10, unique=True)
parent = models.ForeignKey('self', null=True, blank=True, on_delete=models.CASCADE)
node_order_by = ['name']
class TaggedPost(ItemBase):
post = models.ForeignKey('Post', on_delete=models.CASCADE)
tag = models.ForeignKey('Tag', related_name="tagged_posts", on_delete=models.CASCADE)
class Meta:
unique_together = ('post', 'tag')
def __str__(self):
return self.tag.name
class Post(ItemBase):
title = models.CharField(max_length=125, unique=True)
slug_title = models.SlugField(max_length=255, unique=True)
summary = models.TextField(max_length=100)
body = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(User, on_delete=models.CASCADE)
status = models.BooleanField(default=True)
tags = TaggableManager(through='TaggedPost')
class Meta:
ordering = ['-published_date']
def __str__(self):
return self.title
def save(self, *args, **kwargs):
self.slug_title = slugify(self.title)
super(Post, self).save(*args, **kwargs)
I ran python manage.py makemigrations
and python manage.py migrate
successfully, but the relational tables (blog_tag
and blog_taggedpost
) are not being created.
When I try to create a new tag using Tag.objects.create(name='Parent Tag')
, I receive the following error:
django.db.utils.ProgrammingError: relation "blog_tag" does not exist
I am not sure why the tables are not being created and how to resolve this issue. Any help would be greatly appreciated!