免責事項:継承したデータベース/ PHPアプリに適用するため、djangoを学習しています。データベースは少しごちゃごちゃしており、外部キーの制約がなく、命名に一貫性がありません。レガシーアプリケーションをまったく使いたくないので、データベースに手を加えたりやり直したりしたくありません。
スタック: Python 2.7。Django 1.5、Django Rest フレームワーク
問題は、複数のティッカーを持つアイデアがある関係にあることです。ティッカー テーブルにはアイデア (teaser_id) への外部キーがあるため、次のようなものがあります。
**Tickers**
id teaser_id
1 1
2 1
3 1
4 2
4 2
**Ideas**
id
1
2
私はdjangoにデータベースからモデルを生成させましたが、FK Constraintsがなければ、すべての関係を適切に生成しませんでした. したがって、モデルが構成されているのは次のとおりです。
class Tickers(models.Model):
id = models.IntegerField(primary_key=True)
# I changed to this
teaser_id = models.ForeignKey(Idea)
# From
# teaser_id = models.IntegerField(null=True, blank=True)
ticker = models.CharField(max_length=135L, blank=True)
date_added = models.CharField(max_length=135L, blank=True)
class Meta:
db_table = 'teaser_tickers'
class Idea(models.Model):
id = models.IntegerField(primary_key=True)
industry_id = models.IntegerField()
post_type = models.CharField(max_length=45L)
class Meta:
db_table = 'idea'
ここに私のシリアライザーがあります
class TickerSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = myModels.Tickers
fields = (
'id'
,'teaser_id'
,'ticker'
)
class IdeaSerializer(serializers.HyperlinkedModelSerializer):
user = UserSerializer(many=False, read_only=True)
ticker = TickerSerializer(many=True, read_only=True, )
teaser = myFields.TeaserField(teaser_length=200, original_field='content')
class Meta:
model = myModels.Idea
fields = (
'id'
, 'title'
, 'date_added'
, 'user'
, 'teaser'
, 'ticker'
)
アイデア リソースがティッカーを子ノード セットとして返すようにします。
REST 要求は、ティッカーが子要素であるアイデアに対するものです。そのため、ティッカーがアイデアで定義されていないという例外が発生しています。わかりました-しかし、私はこの時点でこれを設定する方法を推測しているだけです-ドキュメントとソースをスラッジしています-誰かが私を助けてくれることを望んでいました.
ありがとうございました