是否可以为Django www.example.com中的表字段指定一个外键models.py到数据库中的任何表?

apeeds0o  于 2023-06-07  发布在  Go
关注(0)|答案(1)|浏览(135)

假设在数据库“table”中有一个表,不是Django创建的。是否可以以任何方式将其指定为外键?

class Object(models.Model):
    object_id = models.IntegerField(unique=True)
    param = models.ForeignKey('table', on_delete= models.DO_NOTHING)
...
nle07wnf

nle07wnf1#

在Django模型上有一个 meta选项来指定表存在但不受Django管理:
https://docs.djangoproject.com/en/4.2/ref/models/options/#managed
Django也可以通过使用inspectdb manage命令指向表来构建模型类:
https://docs.djangoproject.com/en/4.2/howto/legacy-databases/
所以实际上你会有:

class Object(models.Model):
    unmanaged_fk = models.ForeignKey('UnmanagedObject', blank=True, null=True, on_delete=models.SET_NULL)

class UnmanagedObject(models.Model):
    some_field = models.CharField(max_length=200)
    ...
    ...

    class Meta:
        managed=False
        db_table = 'Name_Of_My_Database_Table'

相关问题