2017-09-30 4 views
1

エラー名は、モデルのプロフィールには有効ではありません。ここでフィールド名user_usernameは

私が正しくuser_idを得ることができますが、どういうわけか、私はこれがserializers.py

class ProfileEditSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Profile 
     fields = (
      'user_username', <<< 
      'title', 
      'gender', 
      'birth', 
      'height', 
      'height_in_ft', 
      'profile_img', 
     ) 

models.py

でそのユーザ名フィールドに

にアクセスすることはできません私のviews.py

class ProfileEditAPIView(DestroyModelMixin, UpdateModelMixin, generics.RetrieveAPIView): 
    serializer_class = ProfileEditSerializer 

    def get_queryset(self): 
     logged_in_user = User.objects.filter(username=self.request.user.username) 
     return logged_in_user 

    def get_object(self): 
     queryset = self.get_queryset() 
     obj = get_object_or_404(queryset) 
     return obj.profile 

    def put(self, request, *args, **kwargs): 
     return self.update(request, *args, **kwargs) 

    def delete(self, request, *args, **kwargs): 
     return self.destroy(request, *args, **kwargs) 

です

class Profile(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL) title = models.TextField(max_length=155, blank=True) gender = models.CharField(max_length=10, choices=GENDER_CHOICES, default='u') # Recommend Factor location = models.CharField(max_length=40, choices=LOCATION_CHOICES, default='ud') # Recommend Factor birth = models.DateField(default='1992-07-23', blank=True, null=True) # Recommend Factor height = models.CharField(max_length=5, default='undefined') height_in_ft = models.BooleanField(default=True) profile_img = models.ImageField( upload_to=upload_location, null=True, blank=True) 

なぜユーザーのユーザー名にアクセスできないのですか?そして、どうすればこの問題を解決できますか?

おかげ

+0

プロフィールモデルを表示できますか? –

+0

@ MD.KhairulBasar質問を編集しました。 –

+0

'user_username'を' user__username'にするべきではありませんか?ダブルアンダースコア? –

答えて

1

あなたはこの方法を使用してusernameUserからモデルを得ることができます。

class ProfileEditSerializer(serializers.ModelSerializer): 
    username = serializers.CharField(read_only=True, source="user.username") 

    class Meta: 
     model = Profile 
     fields = (
      'username', 
      'title', 
      . . . . 
     ) 
+0

ほぼ! read_onlyなので、あなたの答えはこの問題には関係しません。私のviews.pyをチェックすると、それはUpdateModelMixinを持っています。申し訳ありません –

+0

@JohnBaek、理想的には、ユーザー名を変更するオプションを与えるべきではありません。しかし、あなたが変わってしまったら** read_only = True'を削除するだけです。 –

関連する問題