私はアクティビティモデルを構築していますが、これはややこのpackageに似ています。それは俳優、動詞とターゲットを持っています。どちらのモデル(入札、仕事やニュース)の新しいオブジェクトが作成されるたびに今、新しいActivityオブジェクトがtarget
これら3つのモデルのいずれかのオブジェクトであることと、作成されています。ContentTypeオブジェクト用のdjango-rest-frameworkシリアライザ
class Activity(models.Model):
actor_type = models.ForeignKey(ContentType, related_name='actor_type_activities')
actor_id = models.PositiveIntegerField()
actor = GenericForeignKey('actor_type', 'actor_id')
verb = models.CharField(max_length=10)
target_type = models.ForeignKey(ContentType, related_name='target_type_activities')
target_id = models.PositiveIntegerField()
target = GenericForeignKey('target_type', 'target_id')
pub_date = models.DateTimeField(default=timezone.now)
eg. user (actor) published (verb) title (target)
class Tender(models.Model):
title = models.CharField(max_length=256)
description = models.TextField()
class Job(models.Model):
title = models.CharField(max_length=256)
qualification = models.CharField(max_length=256)
class News(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
title = models.CharField(max_length=150)
私は私に必要なJSONデータを取得するAPIを作っています。このデータを取得するために。私はこのためにdjango-rest-frameworkを使用しており、非常に新しいです。上記のシリアライザで
class ActorSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email')
class ActivitySerializer(serializers.HyperlinkedModelSerializer):
actor = ActorSerializer()
class Meta:
model = Activity
fields = ('url', 'actor', 'verb', 'pub_date')
、私はactor
がユーザーになることを知っていました。それで、ActorSerializer
クラスのUserモデルを使用しました。しかし、target
については、これらの3つのモデル(ニュース/ジョブ/入札)のいずれかにすることができます。私はActivitySerializer
クラスフィールドにtarget
を使用できるように
はどのようにしてたContentTypeオブジェクトのシリアライザ(例えば。TargetSerialier
クラス)を作ることができますか?
これは、これらのフィールドが現在読まれていることを意味しますか? ActivityObjectを保存しようとしたらどうなりますか? read_onlyを与えないと、クエリーセットを渡す必要がありますが、そこに到達する前にどんなモデルになるのか分かりません。私は誤解していますか? –