をしようとしているときでは、この問題は、インターネット全体にコメントしているが、それはユーザーにほとんど常にだからこそ、私は知りません。違反の非NULL制約。 ForeighKey(ないユーザーが)ジャンゴRestFrameworkに投稿する
私の場合、問題はユーザーではありません。
私は、このモデルがあります:
class DocumentDetail(models.Model):
date = models.DateTimeField(_('date'), auto_now_add=True)
note = models.TextField(_('note'), blank=True)
checked = models.BooleanField(_('checked'), default=False)
details_sample = models.ForeignKey(DocumentDetailSample, related_name='details_sample',
verbose_name=_("details_sample"), blank=False)
user_id = models.ForeignKey(User, related_name='document_user_id', verbose_name=_('document_user_id'), blank=False)
class Meta:
ordering = ('date',)
私は、ユーザーDocumentDetailSampleフィールドをすることができます。
def perform_create(self, serializer):
serializer.save(user_id=self.request.user)
def perform_update(self, serializer):
serializer.save(user_id=self.request.user)
しかし、私はそれがあるべき「details_sample」を知ることができないのでdetails_sample
と、それは、ポストに渡されたものになるはずです。
問題は、ユーザと、私はこれを行うことができるということです。
私はid
を投稿体に渡すことができたと思っています。
{
"note" : "Oh, nice",
"checked": "True",
"details_sample": "1"
}
しかし、私はこのエラーを取得する:
django.db.utils.IntegrityError: null value in column "details_sample_id" violates not-null constraint DETAIL: Failing row contains (9, 2017-01-24 14:43:58.75642+00, Oh, nice, t, 2, null).
だから、すべてのものが、details_sampleが働いていました。 :(ここ
そして行う?
class DocumentDetailSerializer(serializers.ModelSerializer):
title = serializers.ReadOnlyField(source='details_sample.title')
icon = serializers.ReadOnlyField(source='details_sample.icon')
priority = serializers.ReadOnlyField(source='details_sample.priority')
description = serializers.ReadOnlyField(source='details_sample.description')
prefix = serializers.ReadOnlyField(source='details_sample.prefix')
advertise = serializers.ReadOnlyField(source='details_sample.advertise')
class Meta:
model = DocumentDetail
fields = (
'url', 'id', 'date', 'icon', 'checked', 'priority', 'title', 'note', 'description', 'prefix', 'advertise'
)
私は」:
"1";"2017-01-24 14:40:37.881802+01";"Life is beautiful";"''";"1";"The life is beautiful. And there's also a movie";"This is about life";"{"name": "Chuck", "phone": "123"}"
誰も私が
EDIT
を行うことができ、ここで私のシリアライザ何を知っています管理サイトでそれを行うことができますが、そこには "使用する"ことができますインスタンス全体問題はPOST中です。 GETもうまくいきます。
何あなたのシリアライザは見えますか? – Linovia
それがあります。おかげで答え:) –