Как связать поля моделей?

Как сделать, чтобы значения поля default_limit модели Group передавались в поле limit модели Limit?

class Group(models.Model):
    id = models.BigIntegerField(verbose_name='ID группы', primary_key=True, unique=True)

    name = models.CharField(verbose_name='Название', max_length=100)
screen_name = models.CharField(verbose_name='Короткое имя', max_length=100, unique=True)
    default_limit = models.IntegerField(verbose_name='Лимит по умолчанию', default=5)
secret = models.CharField(verbose_name='Секретный ключ', max_length=50, null=True, blank=True)

class Meta:
    verbose_name = 'группа'
    verbose_name_plural = 'группы'

def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
    info = api.groups.getById(group_id=self.screen_name)[0]

    self.id = info['id']
    self.name = info['name']
    self.screen_name = info['screen_name']

    super().save(force_insert, force_update, using, update_fields)

def __str__(self):
    return self.name

def get_url(self):
    return f'https://vk.com/{self.screen_name}'

class User(models.Model):
    id = models.BigIntegerField(verbose_name='ID пользователя', primary_key=True, unique=True)

    first_name = models.CharField(verbose_name='Имя', max_length=50)
    last_name = models.CharField(verbose_name='Фамилия', max_length=50)
    screen_name = models.CharField(verbose_name='Короткое имя', max_length=100, unique=True)
    notation = models.TextField(verbose_name='Доп. информация', null=True, blank=True)

    groups = models.ManyToManyField(Group, through='Limit', through_fields=('user', 'group'))

    class Meta:
        verbose_name = 'пользователь'
        verbose_name_plural = 'пользователи'

    def __str__(self):
        return f'{self.first_name} {self.last_name}'

    def get_url(self):
        return f'https://vk.com/{self.screen_name}'

    def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
        info = api.users.get(user_ids=self.screen_name, fields='screen_name')[0]

        self.id = info['id']
        self.first_name = info['first_name']
        self.last_name = info['last_name']
        self.screen_name = info['screen_name']

       super().save(force_insert, force_update, using, update_fields)

class Limit(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='Пользователь')
    group = models.ForeignKey(Group, on_delete=models.CASCADE, verbose_name='Группа')

    is_limited = models.BooleanField(verbose_name='Учитывать лимит?', default=True)
     limit = models.IntegerField(verbose_name='Лимит', default=5)

    class Meta:
        verbose_name = 'лимит'
        verbose_name_plural = 'лимиты'

    def __str__(self):
        return self.user.__str__()
Вернуться на верх