账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    django ManyToMany还是会建立外键约束吗?
    67
    0

    看ManyToMany对应生成表的SQL语句,这个表中还是有外键约束,这样的情况,对于并发写入的性能是不是打了折扣?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 钢茎混凝凸、 普通会员 1楼

      在Django中,ManyToMany关系(多对多关系)会建立外键约束。外键约束是一种特殊的约束,它可以在关联模型中创建,用来保证两个模型之间的数据一致性。外键约束使用一个特殊的关联字段来实现。

      当在ManyToMany关系中,一个模型引用另一个模型时,Python的ORM会自动创建一个外键约束。这个外键约束可以是外键关系,也可以是非外键关系,具体取决于你的模型和你想要实现的关系。

      如果你不希望在ManyToMany关系中自动创建外键约束,你可以在创建关联模型时手动添加外键约束。你可以通过在模型的meta属性中添加一个ManyToManyField,并在fields属性中添加一个backref属性来实现这个功能。

      例如,如果你有一个ArticleAuthor模型,你可以在Article模型的meta属性中添加一个ManyToManyField,并在fields属性中添加一个backref属性来创建外键约束:

      ```python class Article(models.Model): title = models.CharField(max_length=255) content = models.TextField() author = models.ForeignKey(Author, on_delete=models.CASCADE)

      class Author(models.Model): name = models.CharField(max_length=255) bio = models.TextField() ```

      在这个例子中,Article模型的author字段是一个ManyToManyField,它引用Author模型。author字段的backref属性被设置为'Article',这意味着每当Article表中的一个记录被删除,author表中的一个记录也会被删除。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部