2017-07-06 31 views
0

nullでない私は、Djangoの残りのフレームワークを使用していますし、私のserialiazers.pydjango.db.utils.IntegrityError:列にNULL値 - しかし、値が

class MeetingSerializer(serializers.ModelSerializer): 
    meeting_organiser = serializers.HiddenField(default=serializers.CurrentUserDefault()) 

    class Meta: 
     model = Meeting 
     fields = '__all__' 

に私のmodels.pyMeetingモデルは次のようである:

しかし
class Meeting(models.Model): 
    [some fields here...] 
    meeting_organiser = models.ForeignKey(User, default=1) 
    [more fields here...] 

、私はこのエラーを取得するMeetingモデルにsave()をやろう:

django.db.utils.IntegrityError: null value in column "meeting_organiser" violates not-null constraint 

私はデバッグしようとしたとserializers.pyに追加:

def save(self): 
    print(self.validated_data) 

models.pyに:

def save(self, *args, **kwargs): 
    print(self.meeting_organiser.username) 

を両方のケースでは、会議の主催者オブジェクトがnullではなかったし、それが正しい値を含んでいました。

+0

「ミーティング」で使用される「ユーザー」はどこから来ますか? @Linovia、apologies! – Linovia

+0

私は私の質問でこれを追加しませんでした。これは標準のdjangoユーザモデルから来て、 '' from django.contrib.auth.models import User''のようにインポートされます。 – Galil

+0

ちょっと考えてみてください。外部キーに 'null = True'を設定してみてください。 – bhansa

答えて

0

要求が認証されていることを確認するには、IsAuthenticatedなどのアクセス許可を追加する必要があります。

AnonymousUserNoneに変換されます。このパラメータは明示的に指定されているため、モデルのデフォルトは適用されません。

+0

、私が設定した 'REST_FRAMEWORK =: 'と私は私が認証されておりません場合、私はAPIにアクセスできないことをテストしている{ 「DEFAULT_PERMISSION_CLASSES」 ( は、 「rest_framework.permissions.IsAuthenticated」)}。さらに、 'models.py'の' print(self.meeting_organiser.username) 'は、正しい(nullでない)値を返します。 – Galil

関連する問題