【发布时间】:2014-07-31 20:55:28
【问题描述】:
简明问题:
在不使用 through 参数的情况下,在 Django (1.5) 中在外部表上建模多对多关系有哪些优点和缺点?
详情:
比如说,我有一个自定义用户模型 UserProfile,我想定义一个与同一模型的 m2m 关系,例如实现一个 following 关系。我可以定义一个外部表(模型)like so:
class Relationship(models.Model):
"""Relationship model"""
from_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='from_users')
to_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='to_users')
created = models.DateTimeField(auto_now_add=True)
is_blocked = models.BooleanField(default=False)
objects = RelationshipManager()
在这种情况下,我应该向 UserProfile 模型添加一个 m2m 字段,如下所示?如果是,为什么?我可以只使用 Relationship 模型来处理用户之间的所有关系,不是吗?
class UserProfile(AbstractBaseUser, PermissionsMixin):
user_following = models.ManyToManyField('self', through=Relationship, symmetrical=False, related_name='followed')
【问题讨论】:
标签: django django-users django-orm django-custom-user