Django修改桥表

时间:2016-11-24 20:59:47

标签: django django-models

我的django应用程序中有两个模型,事件/用户,它们具有多对多的关系。

活动可以有很多与会者(用户)。 用户可以参加很多活动。

Django自动为这种关系建立了一个桥牌表。

我的问题是如何使用迁移向该表添加新字段,因为此Bridge表没有模型。

2 个答案:

答案 0 :(得分:3)

这可以通过创建"通过"表并在其上添加字段。查看https://docs.djangoproject.com/es/1.10/topics/db/models/

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

    def __str__(self):              # __unicode__ on Python 2
        return self.name

class Membership(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    group = models.ForeignKey(Group, on_delete=models.CASCADE)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)

答案 1 :(得分:1)

此桥接表称为关联表。 Imo以这种方式编辑这个表是不好的做法。许多领域的模型连接表明两者之间没有模型。如果您的关联表应该代表其他数据,那么您应该创建新模型

class NewModel(models.Model):
    attender = models.ForeignKey(User, null=False)
    event = models.ForeignKey(Event, null=False)
    # additional fileds

并从事件中删除多对多的关系