質問

エンティティのクラス、つまり Activity の親、つまり Event の親を持つDjangoモデル(スケジュール)があります。

class Entity(models.Model):
    <...>

class Activity(models.Model):
    <...>
    team_entity = models.ForeignKey(Entity)
    <...>   

class Event(models.Model):
    <...>
    activity = models.ForeignKey(Activity)
    <...>

子オブジェクトと孫をJSONファイルの一部としてシリアル化して取得するにはどうすればよいですか?

役に立ちましたか?

解決 2

今はdjango-pistonを使用しています。これがトリックです。

他のヒント

シリアル化を行う前に、オブジェクトを取得するとき、関係を保持するにはselect_related()を使用して子、孫などを取得します

http://docs.djangoproject.com/en/dev/を参照ref / models / querysets /

私には、ポスターが尋ねていた質問は次のような結果になることだったようです:

たとえば、これらのモデルから始めます:

class Entity(models.Model):
    name = models.CharField(...)

class Activity(models.Model):
    name = models.CharField(...)
    team_entity = models.ForeignKey(Entity)

class Event(models.Model):
    name = models.CharField(...)
    activity = models.ForeignKey(Activity)

JSONの結果:

{
    "model": "Entity",
    "name":  "Dallas Cowboys",
    "activities": [
        {
            "model": "Activity",
            "name": "Practice"
        },

        {
            "model": "Activity",
            "name": "Game"
            "events": [
                {
                    "model": "Event",
                    "name": "vs Washington Redskins"
                },

                {
                    "model": "Event",
                    "name": "vs Green Bay Packers"
                }
            ]
        }
    ]
}

したがって、親子孫を保持します(継承ではなく、1対多の関係トラバーサル)。これが最初のポスターの意図ではない場合、私は謝罪します...しかし、もしそうなら、私もこれに対する答えが欲しいです。

ここで答えを見つけることができると思います: http://code.djangoproject.com/ticket/ 4656

これは、ある段階でdjangoシリアライザーの一部になります。現時点では、標準のdjangoシリアライザーをこれに置き換えるだけで動作するはずです。

簡単な2行のコードでこれを行うことができます:

from django.core import serializers
data = serializers.serialize("json", SomeModel.objects.all())
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top