drf 序列化外鍵表中的 數據


models.py

class Counties(BaseModel):
    countname = models.CharField(max_length=128,
                                 verbose_name="國家名稱",
                                 null=True,
                                 blank=True)
    phoneareacode = models.IntegerField(verbose_name="電話區號",
                                        null=True,
                                        blank=True)
    code = models.IntegerField(verbose_name="國家code",
                               null=True,
                               blank=True)
    county_num = models.CharField(verbose_name="標號",
                                  max_length=10,
                                  null=True,
                                  blank=True)

    class Meta:
        verbose_name = "國家表"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.countname


class Provinces(BaseModel):
    provincesname = models.CharField(max_length=128,
                                     verbose_name="城市名字")
    # counties = models.OneToOneField(to="Counties",
    #                                 verbose_name="所屬國家",
    #                                 related_name="coun",
    #                                 on_delete=models.CASCADE,
    #                                 null=True,
    #                                 blank=True)
    counties = TenantForeignKey(to="Counties",
                                verbose_name="所屬國家",
                                related_name="coun",
                                on_delete=models.CASCADE,
                                null=True,
                                blank=True)
    provinces_num = models.CharField(verbose_name="編號",
                                     max_length=10,
                                     null=True,
                                     blank=True)

    class Meta:
        verbose_name = "省份表"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.provincesname


class City(BaseModel):
    cityname = models.CharField(max_length=128,
                                verbose_name="城市名字",
                                null=True,
                                blank=True)
    provinces = TenantForeignKey(to="Provinces",
                                 verbose_name="所屬省份",
                                 related_name="prov",
                                 on_delete=models.CASCADE,
                                 null=True,
                                 blank=True)
    city_num = models.CharField(max_length=10,
                                   verbose_name="城市標號",
                                   null=True,
                                   blank=True)


    class Meta:
        verbose_name = "城市表"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.cityname

serialzier.py

from models import (Jobs,
                    Aivideomodel,
                    Aiability,
                    Question,
                    Candidate,
                    InvitationJobInterviewForm,
                    Jobtype,
                    Functions,
                    City,
                    Provinces,
                    Counties)
class JobTypeSerializer(serializers.ModelSerializer):
functions_name = serializers.CharField(source='functions.function_name')

class Meta:
model = Jobtype
fields = ('id', 'jobtype_name', 'functions', 'functions_name')


class CitySerializer(serializers.ModelSerializer):
provinces_name = serializers.CharField(source='provinces.provincesname') # 跨一張表序列化省的名字
count_id = serializers.IntegerField(source='provinces.counties.id') # 跨兩張表序列化國家的ID
count_name = serializers.CharField(source='provinces.counties.countname') # 跨兩張表序列化國家的名字 注意 source='' 指定來源那張表那個字段 注意這些外鍵關聯的表model必須要導入進來

class Meta:
model = City
fields = ('id', 'cityname', 'provinces_id', 'provinces_name', 'count_id', 'count_name')
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM