我只是想知道django中招聘模式的最佳设置是什么?
用户只能由一个用户招募,但用户本身可能会招募许多其他用户。
是否如此简单:
class Recruiter(models.Model):
recruiter = models.ForeignKey(settings.AUTH_USER_MODEL)
class Recruited(models.Model):
recruited = models.ForeignKey(settings.AUTH_USER_MODEL)
class UserProfile(AbstractUser):
recruited_by = models.ForeignKey(Recruiter, blank=True)
recruited = models.ManyToManyField(Recruited, blank=True)
objects = UserManager()
或者这是一种更好的方法吗?
答案 0 :(得分:1)
你在尝试什么? 我会这样做:
class UserProfile(AbstractUser):
recruited_by = models.ForeignKey("self", blank=True, related_name="recruited")
objects = UserManager()
Recruiter和Recruited类是必需品吗?
答案 1 :(得分:1)
我会这样做:
class Recruiter(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
class Recruited(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
recruited_by = models.ForeignKey(Recruiter)
由于每个招聘人员is
一个用户和每个招募is
一个用户,但一个招募的is recruited by
一个招聘人员和一个招聘人员可以have recruited
0到多个招募人员。在此模式中,Recruiter实例存在隐式向后关系,如:
recruiter_instance.recruited_set
只需查看文档:
https://docs.djangoproject.com/en/1.4/ref/models/fields/#django.db.models.ForeignKey
https://docs.djangoproject.com/en/1.4/topics/db/queries/#backwards-related-objects
https://docs.djangoproject.com/en/1.4/ref/models/fields/#onetoonefield
如果您使用的是不同的Django版本,则可以使用版本切换 - 它位于右下角的每个Django文档页面上。