私は最近 django-tastypie を始めましたが、これまでのところフレームワークが大好きです。そうは言っても、モデルとの OneToOne 関係の POST で問題が発生しており、かなりの時間を費やしましたが、何が欠けているのかわかりませんでした。モデルとリソース コードは次のとおりです。
モデル
class Question(TimeStampedModel):
question_title = models.CharField("question title", max_length=100)
question_desc = models.TextField("question description", max_length=1000)
.......
2 番目のモデルは、質問と OneToOne の関係を持っています -
class QuestionAnswer(TimeStampedModel):
question = models.OneToOneField(Question)
.....
リソース
QuestionAnswerResource -
class QuestionAnswerResource(ModelResource):
question = fields.ForeignKey('myapp.api.QuestionResource', 'question')
class Meta:
queryset = QuestionAnswer.objects.all()
resource_name='questionanswer'
QuestionResource -
class QuestionResource(ModelResource):
questionanswer = fields.OneToOneField('myapp.api.QuestionAnswerResource', 'questionanswer', full=True)
class Meta:
queryset = Question.objects.all()
resource_name = 'question'
上記のセットアップでは、質問インスタンスとその回答属性を使用して、GET で正しい応答を取得します。ただし、この質問/回答を保存するためにデータを POST しようとすると、以下のエラーで失敗します -
"{"error_message": "", "traceback": "Traceback (最新の呼び出しが最後):\n\n ファイル \"/Library/Python/2.7/site-packages/tastypie/resources.py\", 192 行目、................................................................................. ................................... 636 行目、ハイドレート\n
値 = super(ToOneField, self).hydrate(bundle)\n\n ファイル \"/Library/Python/2.7/site-packages/tastypie/fields.py\"、154 行目、ハイドレート内\n elif self.attribute および getattr(bundle.obj) , self.attribute, None):\n\n ファイル \"/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/db/models/fields/related.py\ "、343 行目、get \n raise self.field.rel.to.DoesNotExist\n\nDoesNotExist\n"}"
誰かが私が欠けているものを指摘できますか?