我正在尝试用通用字段替换中间表中的字段。使用Django 1.6,MariaDB / MySQL。
我有一个类(PermissionGroup)将资源链接到一个组。工作良好。但是我有几个相似的表 - 将一些id链接到一个组ID。
我以为我可以用一个使用通用外键的表以及组ID替换这些表。但是这不会验证。
这是原作,有效:
# core/models.py
class PermissionGroup(models.Model):
resource = models.ForeignKey('core.Resource')
group = models.ForeignKey('auth.Group')
class Resource(models.Model):
groups = models.ManyToManyField('auth.Group', through='core.PermissionGroup')
# auth/models.py
class Group(models.Model):
name = models.CharField(max_length=80, unique=True)
现在,尝试将PermissionGroup更改为使用GenericForeignKey:
# core/models.py
class PermissionGroup(models.Model):
content_type = models.ForeignKey('contenttypes.ContentType')
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
group = models.ForeignKey('auth.Group')
class Resource(models.Model):
groups = models.ManyToManyField('auth.Group', through='core.PermissionGroup')
# auth/models.py
class Group(models.Model):
name = models.CharField(max_length=80, unique=True)
django模型验证现在失败了:
core.resource:'groups'是通过模型PermissionGroup手动定义的m2m关系,它没有组和资源的外键
这根本不可能,还是另一种方法来实现这个目标?