问题描述
- 错误写法
# 技能類別表
class ESkill_type(models.Model):
skill_id = models.IntegerField(null=False, unique=True)
class Meta:
db_table = 'E_SKILL_TYPE'
# 人物技能表
class E_PERSON_SKILL(models.Model):
skill_class = models.ForeignKey(ESkill_type, to_field='skill_id', verbose_name="技能大类" )
skill_division = models.ForeignKey(ESkill_type, to_field='skill_id', verbose_name='技能中类')
class Meta:
db_table = 'E_PERSON_SKILL'
上面skill_class
,skill_division
字段都外键到skill_id
,会出现Add or change a related_name argument to the definition for xxxxx
- 正确写法
# 技能類別表
class ESkill_type(models.Model):
skill_id = models.IntegerField(null=False, unique=True)
class Meta:
db_table = 'E_SKILL_TYPE'
# 人物技能表
class E_PERSON_SKILL(models.Model):
skill_class = models.ForeignKey(ESkill_type, to_field='skill_id', verbose_name="技能大类" , related_name="skill_class_id")
skill_division = models.ForeignKey(ESkill_type, to_field='skill_id', verbose_name='技能中类', related_name='skill_division_id')
class Meta:
db_table = 'E_PERSON_SKILL'
注意事项
- 当指定外键不加to_field时,默认外键到外键表的主键,当需要指定到其他字段时,如:to_field=‘skill_id’
- 在使用外键时,字段在数据库中对应名格式应该是:name_id,以_id结尾。如(skill_class_id,skill_division_id)
评论区