| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 
 | """
Multiple many-to-many relationships between the same two tables
In this example, an ``Article`` can have many "primary" ``Category`` objects
and many "secondary" ``Category`` objects.
Set ``related_name`` to designate what the reverse relationship is called.
"""
from django.db import models
class Category(models.Model):
    name = models.CharField(max_length=20)
    class Meta:
        ordering = ("name",)
    def __str__(self):
        return self.name
class Article(models.Model):
    headline = models.CharField(max_length=50)
    pub_date = models.DateTimeField()
    primary_categories = models.ManyToManyField(
        Category, related_name="primary_article_set"
    )
    secondary_categories = models.ManyToManyField(
        Category, related_name="secondary_article_set"
    )
    class Meta:
        ordering = ("pub_date",)
    def __str__(self):
        return self.headline
 |