Django получить идентификатор из модели
Как я могу получить id из только что созданной модели, чтобы его можно было использовать в колонке item_name. Я думал о чем-нибудь вроде этого:
class Items(models.Model):
item_id = models.AutoField(primary_key=True)
item_name = models.CharField(
max_length=100, default="Item #{}".format(item_id)
)
вы можете использовать в вызываемом по умолчанию объекте, что-то вроде функции, но не лямбду:
set_name(obj):
return f'Item #{obj}' # this is not work for new object
class Items(models.Model):
# item_id = models.AutoField(primary_key=True) you dont need it, it will be created automatically
item_name = models.CharField(
max_length=100, default=set_name.format(item_id)
)
Одна проблема - это не работает для нового объекта, вы всегда будете получать None. Но ваш item_name
является статическим, поэтому вы можете сделать свойство, например:
class Items(models.Model):
# item_id = models.AutoField(primary_key=True) you don't need it, it will be created automatically
name = models.CharField(
max_length=100, null=false, blank=true, default='')
@property
def item_name(self):
return f'{self.name or 'Item'} #{self.pk or "New object"}'
Другая возможность - отменить __str__
или __repr__
:
class Items(models.Model):
# item_id you don't need it, it will be created automatically
# item_name you don't need it too
def __str__(self):
return f'Item #{self.pk}'
def __repr__(self):
return f'{self}'
@property
def item_name(self):
return f'{self}'