【发布时间】:2014-01-03 09:50:31
【问题描述】:
中文名称格式为'LastnameFirstname'(Lastname 和Firstname 的字符数不同),而英文名称格式为'Firstname LastName'。我们可以看到在中文中,名字姓氏是交换的(这在此处查询不是问题),并且名字姓氏没有用空格分隔(这导致了我这个问题)。
在 SQL 中,我们可以这样做:
SELECT *
FROM USER
WHERE Concat(last_name, first_name) = 'LastnameFirstName';
但是我如何在 Django 中做到这一点?给定一个 FULLNAME 字符串为“LastnameFirstname”,我该怎么做:
User.objects.filter(last_name+firstname=FULLNAME)
另一个solution 是创建一个自定义用户模型并创建一个名为“全名”的新字段,但是这个解决方案使我无法使用其他 django 内置函数:
class User( models.Model ):
first_name = models.CharField( max_length=64 )
last_name = models.CharField( max_length=64 )
full_name = models.CharField( max_length=128 )
def save( self, *args, **kw ):
self.full_name = '{0}{1}'.format( first_name, last_name )
super( User, self ).save( *args, **kw )
我想会有更好的解决方案。
谢谢。 :)
【问题讨论】: