【发布时间】:2018-01-25 17:29:28
【问题描述】:
我正在使用一个名为 Employee 的预先存在的数据库。我想将三个单独的字段合并为一个字段,但我无法向预先存在的数据库添加其他字段。
我知道使用python将多个字段组合成一个字段的正确方法是
'%s - %s %s' % (self.username, self.firstname, self.lastname)
但是,我不能在模型之外调用 self,或者至少我不确定在哪里调用 self。
我的最终目标是拥有一个包含组合字段的选择框,用户可以搜索名字、姓氏或帐户名。我当前的模型如下所示:
class Employee(models.Model):
staff_id = models.IntegerField(db_column = 'Employee_ID')
status_id = models.IntegerField(db_column = 'StatusID')
username = models.CharField(db_column = 'SamAccountName',primary_key = True, max_length = 31)
lastname = models.CharField(db_column = 'Surname', max_length = 63)
firstname = models.CharField(db_column = 'GivenName', max_length = 63)
title = models.CharField(db_column = 'Title', max_length = 127)
class Meta:
managed = False
db_table = '[Employee]'
我试图添加到我的模型中,但是当我调用 full_username 时,它说该字段不存在,这是真的,因为数据库中没有字段。我们不允许向数据库添加新字段。
def get_full_name(self):
full_username = '%s - %s %s' % (self.username, self.firstname, self.lastname)
return full_username.split()
理想情况下,我希望我的视图看起来像这样(我知道它不会按原样工作,我会用 'full_username 替换它):
activeuserlist = Employee.objects.filter(staff_id = '1').values_list('%s - %s %s' % (Employee.username, Employee.firstname, Employee.lastname), flat = True)
我如何将全名添加到我的视图中,我的逻辑缺少什么或放置它的正确位置?
【问题讨论】: