У меня есть следующие модели:
class Question(models.Model):
test = models.ForeignKey(Test, on_delete=models.CASCADE)
text = models.CharField(max_length=255,default='',blank=False)
number = models.IntegerField()
def __str__(self):
return self.text
class Test(models.Model):
PRIVACY_TYPES = (
('PR', 'Private'),
('PU', 'Public'),
)
user = models.ForeignKey(User, on_delete=models.PROTECT)
name = models.CharField(max_length=255,default='',blank=False)
datecreated = models.DateTimeField(auto_now=True)
privacy = models.CharField(choices=PRIVACY_TYPES, default='PR',max_length=15)
testtime = models.IntegerField(default=30)
class User(AbstractBaseUser, models.Model):
username = models.CharField(max_length=20,default='',blank=True)
password = models.CharField(max_length=80,default='',blank=True)
email = models.CharField(max_length=255,default='',blank=True)
Я пытаюсь сериализовать тестовый объект, чтобы также включить имя пользователя и идентификатор из модели User.Вот сериализатор, который я пытаюсь:
class TestSerializer(serializers.ModelSerializer):
question_set = QuestionSerializer(many=True)
user = UserSerializer(source='user')
class Meta:
model = Test
fields = ('id', 'name', 'privacy', 'testtime', 'user', 'question_set')
related_object = 'question'
Пользовательский сериализатор выглядит следующим образом:
class UserSerializer(serializers.Serializer):
class Meta:
model = User
fields = ('id', 'username')
Набор вопросов отлично сериализуется таким образом, но с отношениями наоборот, еслиэто правильный способ описать это, для пользователя я получаю пустой объект с этим кодом.Я пробовал user_username и user.username в полях, но это не работает.
Я искал в Интернете и просматривал документы Django-Rest-Framework, но могу найти только примеры, где связьвопрос для проверки.