Djaong问题与解决方案一览

  1. Django 拓展 User 表

    model中继承 AbstractUser:
    class User(AbstractUser)
    
    settings中添加:
    AUTH_USER_MODEL = 'app_user.User'
    
  2. settings按照环境自动选择数据库

    # 服务器本地环境
    DATABASES = {}
    if 'runserver' in sys.argv:
        print('使用远程数据库')
        ....省略代码....
    if 'test' in sys.argv:
        print('使用测试数据库')
        ....省略代码....
    
  3. django rest serializer 创建前调用

    例如创建前调用设置用户密码
    class UserCreateSerializer(serializers.ModelSerializer):
       class Meta:
           model = User
           fields = ('id', 'username', 'email', 'phone', 'password')
    
       def create(self, data):
           user = User(**data)
           user.set_password(data['password'])
           user.save()
           return user