我的问题与as this question几乎相同,只是所有关系都应该是多对多关系。如何在模型(Django)中描述m2m三连接表
我有以下类在我的models.py(有些简化):
class Profile(models.Model):
# Extending the built in User model
user = models.ForeignKey(User, unique=True)
birthday = models.DateField()
class Media(models.Model):
title = models.CharField(max_length=200)
description = models.TextField(max_length=2000)
class Role(models.Model):
name = models.CharField(max_length=50)
我要的是一个结表看起来是这样的:
CREATE TABLE `media_roles` (
`media_id` bigint(20) unsigned NOT NULL,
`profile_id` bigint(20) unsigned NOT NULL,
`role_id` bigint(20) unsigned NOT NULL
)
- John Doe - 导演,作家,制作人
- 李四 - 执行制片人
- ...
这是我到目前为止已经使用:
class MediaRole(models.Model):
media = models.ForeignKey(Media)
user = models.ForeignKey(Profile)
role = models.ForeignKey(Role)
但是,是不是有这样做的什么更好的办法,而不是涉及在模型中创建一个单独的类?
这是标准的解决方案。你认为什么是错的?请详细说明你不喜欢的事情。 – 2010-04-20 11:52:28
这不是我认为它有什么问题。我只是认为会有另一种方式可以给我一些免费的功能,比如标准的ManyToManyField。 – jmagnusson 2010-04-20 13:39:04
它不是**简单的多对多。这是一个罕见的例外情况。 – 2010-04-22 14:44:47