【问题标题】:Using Django Model: Concatenating Model Fields使用 Django 模型:连接模型字段
【发布时间】:2021-08-24 14:09:38
【问题描述】:

这在我的脑海中似乎很容易,但仍然无法完成。 这是我的模型,它可以按照我的意愿工作,尽管我承认它可以更好。

''' 从 django.db 导入模型

类工程师(models.Model):

position = (
    ('NOC', 'NOC'),
    ('Supervisor', 'Supervisor'), 
    ('Site Manager','Site Manager'), 
    ('Site Engineer', 'Site Engineer'),
    )
region = (
    ('SS','South-South'),('SW','SW'),('SE','SE'), 
    ('NE','NE'),('NW','NW'),('NC','NC'),
    )


firstname = models.CharField(max_length=20)
lastname = models.CharField(max_length=20)
email = models.EmailField(max_length=50)
username = models.CharField(max_length=20)
phone = models.CharField(max_length=11)
position = models.CharField(max_length=20, choices=position)
workarea = models.CharField(max_length=20, choices=region)
face = models.ImageField(upload_to='', height_field=15, width_field=9, blank=True)

''' 所以问题是,我不想让用户输入用户名,而是希望用户名字段自动填充 firstname.lastname 连接,如 firstname + '。姓。在数据库中。我该如何完成这项工作?

谢谢你的期待。

【问题讨论】:

  • 名字可能有空格?名称可能不是唯一的?尽管这很容易(在您的视图或表单代码中进行),但仍有许多边缘情况。

标签: python-3.x django django-models


【解决方案1】:

正如@abdul-aziz-barkat 所说,不建议这样做,因为这会导致重复,但如果您仍然想这样做,一种方法是在模型中实现save 方法,就像这样

  def save(self,*args,**kwargs):
      if self.username in (None,''):
           self.usename = "%s.%s"%(self.first_name,self.last_name)
      super().save(*args,**kwargs)

【讨论】:

    猜你喜欢
    • 2013-10-02
    • 2021-10-17
    • 2012-05-13
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 2019-12-24
    • 2021-11-14
    • 2011-06-22
    相关资源
    最近更新 更多