首页 > 解决方案 > 如何将外键设置到另一个模型的字段?

问题描述

我想为另一个模型的字段设置外键。

我试过外键 to_field='field_name'

class Banks(models.Model):
    name = models.TextField()
    id = models.IntegerField(unique=True)

    class Meta:
        db_table = 'banks'

class Branches(models.Model):
    ifsc = models.CharField(max_length=20, null=False)
    bank_id = models.ForeignKey(Banks, to_field='id', on_delete=models.CASCADE)
    branch = models.CharField(max_length=50)```

ProgrammingError: column branches.id does not exist
LINE 1: SELECT "branches"."id", "branches"."ifsc", "branches"."bank_...

标签: djangodjango-rest-framework

解决方案


只需在 Banks 模型的名称列中添加 unique=True 即可。

class Banks(models.Model):
    name = models.TextField(unique=True) # Just add unique=True
    id = models.IntegerField(unique=True, primary_key=True)

    class Meta:
        db_table = 'banks'

class Branches(models.Model):
    ifsc = models.CharField(max_length=20, null=False)
    bank_id = models.ForeignKey(Banks, to_field='id', on_delete=models.CASCADE) # Now it will work
    branch = models.CharField(max_length=50)

推荐阅读