我有以下型号:
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)
我正在尝试序列化测试对象,以便还包括用户模型中的用户名和id。下面是我正在尝试的序列化程序:
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')
问题集以这种方式序列化很好,但是关系反过来,如果这是描述它的正确方式,那么对于用户来说,我用这个代码得到一个空对象。我试过用户名和用户名在地里,但那不管用。你知道吗
我在网上搜索并查看了Django Rest框架文档,但只能找到将关系作为测试问题的示例。你知道吗
希望我能正确理解你的问题。你知道吗
你的型号.py你知道吗
我的问题更新了,向您展示了
ForeignKey
的含义。ForeignKey
表示ManyToOne
。关于Test
模型,Model
有问题的ForeignKey
字段。这个想法是,你有许多Question
和一个Test
(ManyToOne
),反之亦然,一个Test
和许多Question
。你知道吗这是下面的解决方案
现在用它
相关问题 更多 >
编程相关推荐