Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为具有多对一关系的两个模型创建列表APi_Python_Django_Api_Object_Model - Fatal编程技术网

Python 为具有多对一关系的两个模型创建列表APi

Python 为具有多对一关系的两个模型创建列表APi,python,django,api,object,model,Python,Django,Api,Object,Model,这里我有两个型号的飞机和航班详情。第二种模式是与航空公司的多对一关系模式。当我为航班详细信息创建ListAPi视图时,API上不会显示航空公司名称,而只会显示id(pk)。查看下面的图片,航空公司只有编号,没有航空公司名称 class Airlines(models.Model): Airline_Name = models.CharField(max_length=200, unique= True) Email = models.EmailField(max_

这里我有两个型号的飞机和航班详情。第二种模式是与航空公司的多对一关系模式。当我为航班详细信息创建ListAPi视图时,API上不会显示航空公司名称,而只会显示id(pk)。查看下面的图片,航空公司只有编号,没有航空公司名称

class Airlines(models.Model):
        Airline_Name = models.CharField(max_length=200, unique= True)
        Email = models.EmailField(max_length=200, unique= True, help_text='example@gmail.com')
    
        Address = models.CharField(max_length=200)
        Phone_Number = PhoneField(help_text='Contact phone number')
    
    
        def __str__(self):
            return self.Airline_Name


class FlightDetails(models.Model):
    Flight_Name = models.CharField(max_length=200)
    Aircraft_name = models.CharField(max_length=200)
    airlines = models.ForeignKey(Airlines, null=True, on_delete=models.CASCADE)

    Destination = models.CharField(max_length=200, verbose_name = "To")
    Destination_Code = models.CharField(max_length=200)
    Destination_Airport_name = models.CharField(max_length=200)
在这里,我们可以看到航空公司的名称是1,而不是航空公司的名称。我们如何解决这个问题


在序列化程序中添加深度=2 您应该为航空公司分类(serializers.ModelSerializer):

要获取唯一的航空公司名称,必须在航空公司序列化程序中定义它。我更新了代码块。 depth选项应设置为一个整数值,该整数值指示在恢复为平面表示之前应遍历的关系的深度


src:

请为视图和序列化程序添加代码好吗?如果我添加depth=2,api将显示航空公司模型的所有数据。我们能不能只知道航空公司的名字而不显示身份证。。。您还可以解释这个深度实际上意味着什么吗?class Airlines(serializers.ModelSerializer):class Meta:model=Airlines字段=['airliner\u Name']depth=2
class Airlines(serializers.ModelSerializer):

    class Meta:
        model = Airlines
        fields = ['Airline_Name']

class FlightDetails(serializers.ModelSerializer):
    airline = Airlines()

    class Meta:
        model = Loan
        fields = '__all__'
        depth = 2