4

外部キー関係を持つ 2 つのモデルがあります。

class Company(models.Model):
    field 1
    field 2

class Employee(models.Model):
    company = Model.ForeignKey('Company')
    field 3
    field 4

会社のインスタンスを JSON でシリアル化し、外部キー関係を持つすべての従業員を含めたいと考えています。IE の場合、次のような JSON を作成したいと考えています。この JSON には、会社のすべてのフィールドと、関連するすべての従業員のすべてのフィールドが含まれています。

[
{
    "pk": 2,
    "model": "app.company",
    "fields": {
        "field1": "value",
        "field2": "value",
        "employee": [
            {
                "pk": 19,
                "model": "app.employee",
                "fields": {
                    "field3": "value",
                    "field4": "value",
                }
            },
            {
                "pk": 25,
                "model": "app.employee",
                "fields": {
                    "field3": "value",
                    "field4": "value",
                }
            }
        ]
    }
}
]

Django シリアライザーは関係をシリアライズしません。ここでの他の質問は、深いシリアル化の方法を尋ねてきましたが、逆方向です - IE、従業員とその関連会社をシリアル化します。これらの質問への回答は、wadofstuff django-full-serializer プラグインを使用すると、この種の深いシリアライゼーションを実行できることを指摘しています。問題は、wadofstuff プラグインがこれらの関係を一方向にしかたどらないことです。逆方向の外部キー制約には従いません。だから、私はここで自分自身をロールバックしようとしています。これを達成する方法について何か提案はありますか?

4

1 に答える 1

0

So, here's a super budget way of doing this which works for my purposes, but I feel like there has to be a better way (including it here in case others are looking for how to do this). It works for me only because I'm sending just one Company object at a time, and as such the fact that it doesn't explicitly preserve the relationship hierarchy isn't a big deal.

Given Company instance of "company":

companyJSON = serializers.serialize('json', [company, ])
employeeJSON = serializers.serialize('json', company.employee_set.all())
fullJSON = companyJSON[:-1] + ", " + employeeJSON[1:]
于 2012-10-25T21:20:38.467 に答える