5

我一直在寻找最佳实践,但没有找到。我什至找不到其他人需要使用的解决方案。

我需要根据他的其他数据(名字和姓氏)生成用户的用户名,可选地在末尾附加整数,直到我得到唯一的用户名。

我非常喜欢在模型中这样做。有没有一些标准的方法来做到这一点?还是只适合形式?我一直在研究各种User模型方法以及信号的重载,但没有找到可以添加它的合适位置。

4

1 回答 1

4

一种可能的解决方案是通过pre_save信号。

def my_callback(sender, **kwargs):
    obj = kwargs['instance'] 
    if not obj.id:
       username = get_unique_username(obj) # method that combines first name and last name then query on User model, if record found, will append integer 1 and then query again, until found unique username
       obj.username = username
pre_save.connect(my_callback, sender=User)
于 2012-07-25T12:05:16.243 回答