Я пытаюсь определить пользовательскую переменную внутри класса модели django, которая зависит от связанного объекта. Вот упрощенная версия моего кода:Python Django: инициализировать пользовательскую переменную модели на основе связанного объекта
class Vm(models.Model):
position = models.OneToOneField('Position', null=True, blank=True, default = None)
def __init__(self, *args, **kwargs):
models.Model.__init__(self)
self.port = 5000+10*(self.position.position-1)
class Position(models.Model):
position = models.IntegerField()
Так что, когда я инициализировать объект Vm, я хочу, чтобы получить доступ к его атрибут «порт», который зависит от его соответствующего иностранного ключа «позиции».
Объект Vm и соответствующий объект Position уже созданы и сохранены в DB. Когда я пытаюсь инициализировать объект Vm vm = Vm.objects.get(pk=1)
, я получаю ошибку AttributeError: 'NoneType' object has no attribute 'position'
, как и объект позиции еще не был инициализирован. Как мне это сделать?
благодарит за ответ! просто хочу добавить, что 'super (Vm, self) .__ init __ (self, * args, ** kwargs)' должен быть 'super (Vm, self) .__ init __ (* args, ** kwargs)' – user2302807
О, да, скопируйте пасту ошибка – karthikr