<filename>shitter/models.py
from uuid import uuid4
from django.db import models
from django.contrib.auth.models import User
from django.utils.text import gettext_lazy as _


class Shit(models.Model):
    text = models.CharField(default='', max_length=280, blank=True, verbose_name=_('text'))
    publish_date = models.DateTimeField(auto_now_add=True, verbose_name=_('publish date'))
    user = models.ForeignKey(User, related_name='shits', on_delete=models.CASCADE, verbose_name=_('user'))
    uuid = models.UUIDField(default=uuid4, db_index=True, verbose_name=_('unique id'))
    reshit = models.ForeignKey('shitter.Shit', on_delete=models.CASCADE, verbose_name=_('reshit'), null=True)

    class Meta:
        ordering = ('-publish_date', )


class Favourite(models.Model):
    user = models.ForeignKey(User, verbose_name=_('favourites'), on_delete=models.CASCADE)
    shit = models.ForeignKey(Shit, verbose_name=_('favourites'), related_name='favourites', on_delete=models.CASCADE)
    date = models.DateTimeField(auto_now_add=True, verbose_name=_('favourite date'))

    class Meta:
        unique_together = ('user', 'shit')


class UserFollow(models.Model):
    from_user = models.ForeignKey(User, related_name='following', on_delete=models.CASCADE, verbose_name=_('from user'))
    to_user = models.ForeignKey(User, related_name='followers', on_delete=models.CASCADE, verbose_name=_('to user'))
    date = models.DateTimeField(auto_now_add=True, verbose_name=_('date'))

    class Meta:
        unique_together = ('from_user', 'to_user')

<filename>shitter/models.py
from uuid import uuid4
from django.db import models
from django.contrib.auth.models import User
from django.utils.text import gettext_lazy as _


class Shit(models.Model):
    text = models.CharField(default='', max_length=280, blank=True, verbose_name=_('text'))
    publish_date = models.DateTimeField(auto_now_add=True, verbose_name=_('publish date'))
    user = models.ForeignKey(User, related_name='shits', on_delete=models.CASCADE, verbose_name=_('user'))
    uuid = models.UUIDField(default=uuid4, db_index=True, verbose_name=_('unique id'))
    reshit = models.ForeignKey('shitter.Shit', on_delete=models.CASCADE, verbose_name=_('reshit'), null=True)

    class Meta:
        ordering = ('-publish_date', )


class Favourite(models.Model):
    user = models.ForeignKey(User, verbose_name=_('favourites'), on_delete=models.CASCADE)
    shit = models.ForeignKey(Shit, verbose_name=_('favourites'), related_name='favourites', on_delete=models.CASCADE)
    date = models.DateTimeField(auto_now_add=True, verbose_name=_('favourite date'))

    class Meta:
        unique_together = ('user', 'shit')


class UserFollow(models.Model):
    from_user = models.ForeignKey(User, related_name='following', on_delete=models.CASCADE, verbose_name=_('from user'))
    to_user = models.ForeignKey(User, related_name='followers', on_delete=models.CASCADE, verbose_name=_('to user'))
    date = models.DateTimeField(auto_now_add=True, verbose_name=_('date'))

    class Meta:
        unique_together = ('from_user', 'to_user')
