У меня есть модель Django для пользователей , а затем отдельная модель для AccessLevels .
При сохранении пользователя с помощью ORM Джанго я также хочу поместить запись в таблицу AccessLevels .
Моя проблема в том, что PK из AccessLevels это PK из Users , и я не могу переопределить save()
метод и собрать значение id = models.AutoField(primary_key=True)
.
Вот мой соответствующий код:
class Users(models.Model):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# pk
id = models.AutoField(primary_key=True)
# client_id
client_id = models.IntegerField(null=False, blank=False, default="-1")
...
def save(self, *args, **kwargs):
AccessLevel(user_id=self.id,
client_id=self.client_id).save(using='default')
print('Access Level Set for User while saving')
super(Users, self).save(*args, **kwargs)
Вот важная часть AccessLevel
class AccessLevel(models.Model):
# pk
id = models.AutoField(primary_key=True)
# this is the id for the user, but I get null value
user_id = models.IntegerField(null=False, blank=False, default="-1")
client_id = models.IntegerField(null=False, blank=False, default="-1")
Когда я вызываю этот код, я получаю сообщение об ошибке.
root_user = Users(username='root',
email='root',
first_name='root',
last_name='root',
phone='root',
password=make_password(default_root_pw),
type='root').save(using='default')
Вот ошибка
django.db.utils.IntegrityError: нулевое значение в столбце «user_id» нарушает ненулевое ограничение
ДЕТАЛИ: В ошибочной строке содержится (3, ноль, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0).