У меня есть модель Администратора, связанная с тремя другими моделями через общие отношения.
A = 'Active'
D = 'Disabled'
status = (
(A, 'Active'),
(D, 'Disabled')
)
limit_choices = (models.Q(app_label='core', model='track') | models.Q(app_label='core',
model='company') | models.Q(app_label='core', model='member') )
content_type = models.ForeignKey(ContentType, limit_choices_to=limit_choices, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
status = models.CharField(max_length=7, choices=status, default=D)
class Track(models.Model):
name = models.CharField(max_length=70)
class Company(models.Model):
partner_id = models.ForeignKey(Track, related_name='companies', on_delete=models.CASCADE)
name = models.CharField(max_length=70)
class Member(models.Model):
carrier_id = models.ForeignKey(Track, on_delete=models.CASCADE)
name = models.CharField(max_length=70)
Для сериализации я использую образец кода из официальной документации.
serializer.py
class AdministratorSerializer(serializers.RelatedField):
class Meta:
fields = ('id', 'status', )
model = Administrator
def to_representation(self, value):
if isinstance(value, Track):
return value.id
elif isinstance(value, Member):
return value.id
elif isinstance(value, Company):
return value.id
raise Exception('Unexpected type of tagged object')
Но я получил ошибку
TypeError at /administrator/
__init__() takes exactly 1 argument (3 given)
Пожалуйста, помогите мне решить эту задачу /