我的问题几乎相同as this question,但所有关系应该是多对多的。
我的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
)
这是我到目前为止所使用的:
class MediaRole(models.Model):
media = models.ForeignKey(Media)
user = models.ForeignKey(Profile)
role = models.ForeignKey(Role)
但是,有没有更好的方法来做到这一点,不涉及在模型中创建一个单独的类?
答案 0 :(得分:0)
将两个m2m关系分开怎么办?
class Profile(models.Model):
...
medias = models.ManyToManyField(Media, related_name='profiles')
roles = models.ManyToManyField(Role, related_name='profiles')
这样Django为你创建了两个关联表,你可以利用这样方便的相关字段:
profile = Profile.objects.get(user=someone)
print profile.medias.all()
print profile.roles.all()