为什么在django admin外键中显示属性值,但在angular和数据库中却返回id?

问题描述

在Django admin中,外键显示属性值,但在外角显示ID。 DepartmentID是一个外键,在dajngo admin中显示为dpt_name,但在数据库和anguar中则存储为id。 如何在Angular 9中显示外键值而不是ID?

        models.py

 Department table

    class Department(models.Model):
        DepartmentID = models.CharField(max_length=20,primary_key = True,verbose_name='Department ID')
        dpt_code = models.CharField(max_length=20,verbose_name='code',unique = True,blank = False,null = False)
        dpt_name = models.CharField(max_length=50,verbose_name='name',null = False)
    
        class Meta:
            db_table = '"tbl_department"'
            verbose_name_plural = "Department"
    
        def __str__(self):
            return self.dpt_name

Program Table
  

      class Program(models.Model):
            
            programCode = models.CharField(max_length=3,verbose_name='Program Code',unique = True)
            pro_name = models.CharField(default = 'B.Sc. Engg. in CSE',max_length=50,null = False)
            pro_shortForm = models.CharField(default = 'CSE',max_length=20,verbose_name='short Form',null = False)
            DepartmentID = models.ForeignKey('Department',on_delete=models.CASCADE,verbose_name='department',db_column="DepartmentID")
        
        
            TYPE_CHOICES = (
        ('honours','honours'),('masters','masters'),('diploma','diploma'),('PhD','PhD'),)
            
            pro_type = models.CharField(default = 'honours',max_length=7,choices=TYPE_CHOICES,verbose_name='type')
        
            class Meta:
                db_table = 'tbl_program'
                verbose_name_plural = "Program"
        
            def __str__(self):
                return self.pro_name

解决方法

Django管理员将外键关系显示为相关对象的可读形式。由于您已经实现了__str__魔术方法,因此django admin将显示该方法的返回值。 您的角度代码不会像这样。外键只是该行的一列,它是数据库中的对象ID。