如何在Django中使用Primary Key作为外键

时间:2016-06-17 07:29:26

标签: django django-models

我的模特是

value

我想使用彼此的模型键作为ForeignKey,但是因为“未定义Hallinfo”而得到错误,如果我在RoomInfo上面定义HallInfo,则会给出错误RoomInfo未定义

3 个答案:

答案 0 :(得分:2)

如果您要在关系的两边定义外键,则需要ManyToManyFieldOneToOneField

所以只需删除两个外键并在关系的一侧定义多对多或一对一..

class RoomInfo(models.Model):
    hall = models.OneToOneField(Hallinfo)

答案 1 :(得分:0)

为此,您可以使用字符串引用[1]

class RoomInfo(models.Model):
    hall = models.ForeignKey("Hallinfo", unique=True)
    mobile_no = models.CharField(max_length=10, blank=True)

class HallInfo(models.Model):
    room = models.ForeignKey("RoomInfo", unique=True)
    mobile_no = models.CharField(max_length=10, blank=True)

但是,您还需要至少在一个ForeignKey字段中添加null=True,否则您将无法在没有必需参考值的情况下保存模型的第一个实例。

答案 2 :(得分:0)

尝试使用其他方式声明FK。 https://docs.djangoproject.com/en/1.9/ref/models/fields/#foreignkey

Personnaly我总是使用这种表示法:

manufacturer = models.ForeignKey(
    'app_name.ModelName',
    ....
)

在你的情况下:

> class RoomInfo(models.Model):
>     hall = models.ForeignKey('appname.Hallinfo', unique=True)
>     mobile_no = models.CharField(max_length=10, blank=True)
> 
> class HallInfo(models.Model):
>     room = models.ForeignKey('appname.RoomInfo', unique=True)
>     mobile_no = models.CharField(max_length=10, blank=True)