This recipe is a practical example of how to change a many-to-one relation to a many-to-many relation, while preserving the already existing data. We will use both schema and data migrations in this situation.
Changing a foreign key to the many-to-many field
Getting ready
Let's suppose that you have the Idea model, with a foreign key pointing to the Category model, as follows:
# demo_app/models.py 
from django.db import models 
from django.utils.translation import ugettext_lazy as _ 
 
class Category(models.Model):
    title = models.CharField(_("Title"), max_length=200)
    def __str__(self):
        return self.title
 
class Idea(models.Model):
    title = model.CharField(
        _("Title"),
   ...