首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django models.ForeignKey(“Tablename”)或models.Foreignkey(Tablenamevariable)

django models.ForeignKey(“Tablename”)或models.Foreignkey(Tablenamevariable)
EN

Stack Overflow用户
提问于 2022-02-09 10:03:07
回答 1查看 117关注 0票数 1

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

我注意到,有时字符串和变量名是根据文件中“从上到下读取”的外观调用的。

这里和例子

代码语言:javascript
复制
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)。

问题是:我不能总是使用有时字符串有时变量的insead表的字符串名称吗?这在我的情况下会更安全,难道这两项声明不会做同样的事情吗?

代码语言:javascript
复制
group = models.ForeignKey('AuthGroup', models.DO_NOTHING)
permission = models.ForeignKey('AuthPermission', models.DO_NOTHING)
EN

回答 1

Stack Overflow用户

发布于 2022-02-09 11:28:27

队列是:我不能总是使用有时字符串有时变量的insead表的字符串名称吗?

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

但是如果您愿意,您可以对所有的'app_name.ModelName'使用字符串字面值。如果模型是为与您定义的模型相同的应用程序名定义的,则可以使用'ModelName'引用模型。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71047518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档