Django models Django m2m&x27;通过';使用通用外键

Django models Django m2m&x27;通过';使用通用外键,django-models,Django Models,我有下面的代码示例,这是我正在从事的一个现实世界项目的简化抽象: from django.db import models from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes import generic class FeatureSet(models.Model): """ Feature Set """ name = model

我有下面的代码示例,这是我正在从事的一个现实世界项目的简化抽象:

from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic

class FeatureSet(models.Model):
    """
    Feature Set
    """
    name = models.CharField(max_length=255)

    def __unicode__(self):
        return u"%s" % self.name

class GenericObjectAlpha(models.Model):

    title = models.CharField(max_length=255)

    feature_sets = models.ManyToManyField(FeatureSet, through='Feature')

    def __unicode__(self):
        return u"%s" % self.title

class GenericObjectBeta(models.Model):

    title = models.CharField(max_length=255)

    feature_sets = models.ManyToManyField(FeatureSet, through='Feature')

    def __unicode__(self):
        return u"%s" % self.title         

class Feature(models.Model):
    """
    Feature
    """
    # FK to feature set
    feature_set = models.ForeignKey(FeatureSet)

    # FK to generic object, Generic object alpha or beta... or others
    content_type = models.ForeignKey(
        ContentType,
        default='article',
        limit_choices_to={ 'model__in': ('genericobjectalpha', 'genericobjectbeta') },
        related_name="play__feature_set__feature")
    object_id = models.PositiveIntegerField(
        "Feature object lookup")
    content_object = generic.GenericForeignKey(
        'content_type', 
        'object_id')

    # Extra fields on a m2m relationship
    active = models.BooleanField()
    order = models.PositiveIntegerField()

    def __unicode__(self):
        return u"%s::%s" % (self.feature_set, self.content_object)
此行导致错误:

feature_sets = models.ManyToManyField(FeatureSet, through='Feature')
显然,因为“直通”模型缺少与m2m每侧对应的FK。我想在这里实现的是,m2m关系的一面是通用的,并且,我可以指定自己的中间连接表,以执行通常添加的自定义字段等

我有什么选择来实现这一点

注意,在通用模型中包含
feature\u set=models.ManyToManyField(FeatureSet,through='feature')
行是当前的一项重要要求,主要用于管理UI目的。其通用性的原因是它尚未确定这条线将放置在多少个模型上