首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ManyToMany表(Django)中添加列?

如何在ManyToMany表(Django)中添加列?
EN

Stack Overflow用户
提问于 2018-03-22 04:41:13
回答 2查看 0关注 0票数 0

from xxx import B class A(models.Model): b = ManyToManyField(B)

Django将创建一个新表(A_(B)表A以外有三栏:

id

  • a_id
  • b_id

但是现在我想在表A中添加一个新列_B,所以如果我使用普通SQL会很容易,但是现在任何人都可以帮我做什么?我在这本书里找不到任何有用的信息。

EN

回答 2

Stack Overflow用户

发布于 2018-03-22 12:58:45

使用Django也很容易!你可以用through定义自己的多个中间表

代码语言:txt
复制
Extra fields on many-to-many relationships

class Person(models.Model):
    name = models.CharField(max_length=128)

    def __unicode__(self):
        return self.name

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership')

    def __unicode__(self):
        return self.name

class Membership(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)
票数 0
EN

Stack Overflow用户

发布于 2018-03-22 14:26:35

使用Django 1.8和API:

代码语言:txt
复制
class Person(models.Model):
    pass

class Group(models.Model):
    members = models.ManyToManyField(Person)

Group.members.through._meta.get_field('person').column = 'alt_person_id'
Group.members.through._meta.get_field('group' ).column =  'alt_group_id'

# Prior to python 1.8 _meta can also be used, but is more hackish than this
Group.members.through.person.field.column = 'alt_person_id'
Group.members.through.group .field.column =  'alt_group_id'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003661

复制
相关文章

相似问题

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