我想在自动创建的ManyToMany连接表中存储一些附加信息.我在Django 怎么做呢?

在我的示例中,我有两个表:"Employees"和"Projects".我想存储的是每个项目中每个员工每小时的收入,因为这些值是不一样的.那么,我该怎么做呢?

我想到的不是"ManyToManyField"方法,而是显式创建第三个类/表来存储这些新信息,并使用"ForeignKey"方法设置它与"员工"和"项目"的关系.我很确定这会奏效,但这是最好的方法吗?

推荐答案

以下是您想要实现的目标的示例:

http://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships

万一链路中断:

from django.db import models

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

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

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)
    group = models.ForeignKey(Group)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)

Database相关问答推荐

如何正确创建mongo模型和客户端?

Sequel Pro / MAMP 在哪里存储本地数据库?

动态数据模型

sql-dump 有什么用?

有没有办法使用 JPA 注释和 Hibernate 动态 Select @GeneratedValue 策略?

多列索引的顺序

如何开始使用 SQLCipher for android?

带有字符串列的 SQL 之间的子句

从 DbDataReader 读取数据的最快方法是什么?

Followers/following 关注者表数据库 struct

The method setListAdapter(ArrayAdapter) is undefined for the type create

在 MySQL 中实现一对一关系时确定外键

MySQL 数据库中列名中的连字符

显示包含特定表的所有数据库名称

有人可以详细解释 SOLR requestHandlers 和 responseWriters 吗?

我应该在数据库模式中允许空值吗?

PostgreSQL 哈希索引

数据库与微服务的一致性

TransactionScope 是如何工作的?

传递依赖有什么问题?