python - Django ManyToManyField 中的 'through' 参数是否包含所有字段?

标签 python django django-models

Django 中 ManyToManyField 中的“through”参数是否包含相关表中的所有字段?例如,“组”是否包含所有“个人”和“成员资格”字段? “通过”关系可以有多深?

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

最佳答案

是的,当您使用直通字段时,关联模型的字段都可以从相关表访问。级别可以尽可能深,但创建单独的表会变得更加复杂。

关于python - Django ManyToManyField 中的 'through' 参数是否包含所有字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44565808/

相关文章:

Django 多对多过滤器()

python-3.x - 如何在 Django 中正确创建 InMemoryUploadedFile 对象

python - 如何在 Python 中从离散数据集创建 3D 热图?

Python 2.x - 如何通过trainSet和testSet获取NLTK朴素贝叶斯分类的结果

python - Python 的 Oracle DB 连接错误 - cx_Oracle : cx_Oracle. DatabaseError: DPI-1047

python - 为什么 Python 3 中的 `input` 抛出 NameError : name. .. 未定义

django rest framework 搜索过滤所有字段

python - Django 数组字段

Django:ModelForm 自定义错误消息和占位符

django - MultipleObjectsReturned at/contact-agent/get() 返回了多个属性 - 它返回了 2