Django Admin shows multiple instances for same primary key

I am struggling with a weird issue in Django (4.0.7) where multiple instances for the same primary key are shown in Django Admin, as well as when executing queries. I have displayed the primary keys to make clear that they are identical:

enter image description here

The two classes involved are Collection and Card, where every card has a foreign key to a collection.

class Collection(models.Model):
    FREQUENCY_CHOICES = [('never', 'Never'), ('less', 'Less'), ('normal', 'Normal'), ('more', 'More')]
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=200, blank=True, null=True)
    user = models.ForeignKey(User, related_name='collections', on_delete=models.CASCADE)
    type = models.CharField(max_length=10, choices=(('books', 'Books'), ('tweets', 'Tweets'), ('articles', 'Articles'), ('podcasts', 'Podcasts')))
    custom_id = models.CharField(max_length=200, blank=True, null=True)  # e.g. raindropref, amazon book id, etc.
    url = models.URLField(blank=True, null=True)
    tags = TaggableManager(blank=True)
    connection = models.ForeignKey(Connection, related_name='collections', null=True, blank=True, on_delete=models.SET_NULL)
    frequency = models.CharField(max_length=10, choices=FREQUENCY_CHOICES, default='normal')
class Card(models.Model):
    text = models.TextField()
    collection = models.ForeignKey(Collection, related_name='cards', on_delete=models.CASCADE, blank=True)
    custom_id = models.CharField(max_length=200, null=True, blank=True)
    author = models.CharField(max_length=200, null=True, blank=True)
    url = models.URLField(blank=True, null=True)
    created_at = models.DateTimeField(default=timezone.now)
    favorite = models.BooleanField(default=False)
    tags = TaggableManager(blank=True)
    notes = models.TextField(blank=True, null=True)
    location = models.IntegerField(blank=True, null=True)

I cannot fathom where the issue might be. I have already set up the databse from scratch, with no success.

Here is an example database query:

for c in Collection.objects.all():
    print(c.pk, c.id)

12 12
12 12
12 12
13 13
Back to Top