2015-10-17 70 views
0

我在我的應用程序中編寫用戶自定義模型。應用組件是:Django Rest Model序列化程序和模型繼承

  • Django的1.8
  • Django的REST框架3.2.4
  • Django的allauth 0.23.0
  • Django的其餘-AUTH 0.5。用戶模型的

代碼,你可以看到pythonfiddle.com。當我去Django的休息-auth的註冊端點我看到這個錯誤:

ValueError at /rest-auth/registration/
Cannot use ModelSerializer with Abstract Models.

這是設置與Django的休息-auth的相關:

AUTH_USER_MODEL='authservice.MyUser' 
ACCOUNT_USER_MODEL_USERNAME_FIELD='email' 
ACCOUNT_AUTHENTICATION_METHOD='email' 
ACCOUNT_EMAIL_VERIFICATION='mandatory' 
ACCOUNT_EMAIL_REQUIRED=True  
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS=2 

我怎樣才能解決這個問題?

+0

也許你已經相關聯的串行模式到錯誤的不需要的抽象模型? – Roba

回答

3

據我所知,DRF目前不支持在抽象模型中使用ModelSerializer,但是,您可以使用Serializer

一個簡單的實現會是這樣(未測試),如:

class MyUserSerializer(serializers.Serializer): 
    email = serializers.EmailField() 
    is_active = serializers.BooleanField(default=False) 
    is_admin = serializers.BooleanField(default=False) 
    student = serializers.BooleanField(default=True) 

然後在您的視圖中,可以手動保存。喜歡的東西...

class MyUserView(APIView): 
    def post(self, request): 
     serializer = MyUserSerializer(data=request.DATA) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(status=status.HTTP_201_CREATED) 
     else: 
      return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

此外,關於是否將討論包括這種使用ModelSerializer結賬https://github.com/tomchristie/django-rest-framework/issues/2630https://github.com/chibisov/drf-extensions/issues/84

希望這有助於中!

1

當後莫滕Django的調試器我更仔細的研究局部變量的值,我看到這個問題與rest_framework.authtoken相關的,當我重新安裝DRF ANF重寫INSTALL_APPS名單都成爲確定

+0

確實有幫助 – andre