gpt4 book ai didi

python - 在 django REST 框架中序列化一对多关系

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:51 25 4
gpt4 key购买 nike

我有两个类 persontest,其中一个人可以进行多个测试。我试过序列化这个但是每次我尝试使用

添加一个对象
person= Person.objects.create(title="mr",name="name",address="address",city="city")

它抛出错误IntegrityError:NOT NULL 约束失败:appname_person.tests_id

模型.py

class Test(models.Model):
date = models.DateTimeField(auto_now_add=True)
test_name = models.CharField(max_length=200,default='',blank=False)
test_subject = models.CharField(max_length=100,default='')
test_type = models.CharField(max_length=100,default='')

def __str__(self):
return self.test_name

class Person(models.Model):
tests = models.ForeignKey(Test)
title = models.CharField(max_length=3,default="mr",blank=False)
name = models.CharField(max_length=50,default='',blank=False)
address = models.CharField(max_length=200,default='',blank=False)
city = models.CharField(max_length=100,default='',blank=False)

def __str__(self):
return self.name

serializers.py

class TestSerializer(serializers.ModelSerializer):
class Meta:
model = Test
fields = ('test_name','test_subject','test_type')

class PersonSerializer(serializers.ModelSerializer):

tests = TestSerializer(many=True, read_only=True)
class Meta:
model = Person
fields = ('id', 'title', 'name', 'address', 'city')

最佳答案

好的,首先,你反过来理解了,测试应该有一个指向用户模型的外键。

class Person(models.Model):
title = models.CharField(max_length=3,default="mr",blank=False)
name = models.CharField(max_length=50,default='',blank=False)
address = models.CharField(max_length=200,default='',blank=False)
city = models.CharField(max_length=100,default='',blank=False)

def __str__(self):
return self.name


class Test(models.Model):
tests = models.ForeignKey(Person)
date = models.DateTimeField(auto_now_add=True)
test_name = models.CharField(max_length=200,default='',blank=False)
test_subject = models.CharField(max_length=100,default='')
test_type = models.CharField(max_length=100,default='')

def __str__(self):
return self.test_name

关于python - 在 django REST 框架中序列化一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34269900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com