姜戈模型。外键("表名)或模型。外键(表名变量)



我正在使用inspectdb查看django生成的模型类。

我注意到,有时字符串和有时变量名是基于它们的";从上到下读取";文件中的外观。

此处和示例

class AuthGroup(models.Model):
name = models.CharField(unique=True, max_length=150)
class Meta:
managed = True
db_table = 'auth_group'

class AuthGroupPermissions(models.Model):
id = models.BigAutoField(primary_key=True)
group = models.ForeignKey(AuthGroup, models.DO_NOTHING)
permission = models.ForeignKey('AuthPermission', models.DO_NOTHING)
class Meta:
managed = True
db_table = 'auth_group_permissions'
unique_together = (('group', 'permission'),)

class AuthPermission(models.Model):
name = models.CharField(max_length=255)
content_type = models.ForeignKey('DjangoContentType', models.DO_NOTHING)
codename = models.CharField(max_length=100)
class Meta:
managed = True
db_table = 'auth_permission'
unique_together = (('content_type', 'codename'),)

在我的案例中使用遗留数据库(mysql(。

问题是:我可以不总是使用表的字符串名称插入有时字符串有时变量吗?对我来说那会更安全这两种说法不会起到同样的作用吗?

group = models.ForeignKey('AuthGroup', models.DO_NOTHING)
permission = models.ForeignKey('AuthPermission', models.DO_NOTHING)

问题是:我可以不总是使用有时字符串有时变量的表insead的字符串名称吗?

:使用ForeignKey(Foo, …)可以替换为ForeignKey('Foo', …)。字符串文字通常用于引用将在文件中进一步定义的模型,因为如果尚未定义Foo类,则不能使用Foo

但是,如果您愿意,您可以为所有ForeignKeys使用字符串文字。您可以用'app_name.ModelName'或简单地用'ModelName'引用模型,如果该模型是为与您定义的模型相同的应用程序名称定义的。

相关内容

  • 没有找到相关文章

最新更新