如何最好地设置招聘模式

时间:2013-07-05 12:29:02

标签: django django-models

我只是想知道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()

或者这是一种更好的方法吗?

2 个答案:

答案 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文档页面上。