나는 package과 다소 비슷한 활동 모델을 구축 중이다. 배우, 동사 및 대상이 있습니다. 어느 모델 (입찰, 작업 및 뉴스)의 새로운 객체가 생성 이제 때마다ContentType 객체를위한 django-rest-framework serializer
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)
는 새로운 활동의 목적은 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을 사용하고 있으며 매우 새롭다.eg. user (actor) published (verb) title (target)
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
의 경우 세 가지 모델 (뉴스/작업/입찰) 중 하나 일 수 있습니다. 나는
ActivitySerializer
클래스 필드에
target
을 사용할 수 있도록
은 어떻게 ContentType이 개체의 직렬화 (예. TargetSerialier
클래스)를 만들 수 있습니까?
하지만이 필드는 현재 읽기 전용입니까? ActivityObject를 저장하려고하면 어떻게됩니까? read_only를주지 않으면 queryset을 주어야하지만, 그것이 도착하기 전에 어떤 모델이 될지 모릅니다. 내가 오해하고 있니? –