3

-------------モデル

class Contact(models.Model):
    email = models.EmailField()


class Client(models.Model):
    name = models.CharField(max_length=256)
    contact = models.ForeignKey('Contact')


class Vendor(models.Model):
    name = models.CharField(max_length=256)
    contact = models.ForeignKey('Contact')

-------------モデルシリアライザー

class ContactSerializer(serializers.ModelSerializer):
    class Meta:
        model = Contact


class ClientSerializer(serializers.ModelSerializer):
    class Meta:
        model = Client


class VendorSerializer(serializers.ModelSerializer):
    class Meta:
        model = Vendor

「クライアント フォーム」には次のフィールドが必要です: クライアント モデルのすべてのフィールドと連絡先モデルのすべてのフィールド

これは単一の「ClientSerializer」を使用して可能ですか?

4

1 に答える 1

1

Client FormAPIエンドポイントのシリアライザーについて話していると仮定します(そして、あなたの質問を正しく理解しています):

ClientVendorは にリンクされているため、Contactこれらをサブ構造として追加できます。

class ContactSerializer(serializers.ModelSerializer):
    clients = ClientSerializer(many=True)
    vendors = VendorSerializer(many=True)

    class Meta:
        model = Contact

ネストされたリレーションシップに関するドキュメントを参照してください。

于 2014-03-13T08:18:58.177 に答える