建立一个不在端点之间的跟随系统

2024-09-18 22:11:19 发布

您现在位置:Python中文网/ 问答频道 /正文

用例

我正在开发的应用程序是关于连接初创企业、求职者和投资者的。对不起,我不能给你 虽然我已经开发了40%左右,但名称仍然存在:)。将有三个实体。一个 是启动帐户、最终用户帐户和投资者帐户。我正在考虑添加follow/unfollow特性

  • 最终用户可以跟随启动,反之亦然
  • 初创企业可以跟随投资者,反之亦然
  • 最终用户不能跟随其他最终用户,最终用户不能跟随投资者

为此,我应该如何建模我的应用程序

这是我所说的实体的模型

最终用户型号

class UserSetting(models.Model):
    user = models.OneToOneField(User)
    job_interest = models.ManyToManyField(Category, related_name='user')
    is_email_notification = models.BooleanField(
        default=True, help_text="Email me job recommendations based on my interests and preferences")

    class Meta:
        verbose_name = 'User Setting'
        verbose_name_plural = 'User Settings'

    def __str__(self):
        return self.user.username

启动模式

class Startup(models.Model):
    name = models.CharField(max_length=200, unique=True,
                            blank=False, null=False)
    slug = models.SlugField(unique=True)
    description = models.CharField(max_length=400)

投资者模型

class Investor(models.Model):
    investor = models.ForeignKey(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=200, blank=False,
                            null=False, help_text='Full Name')
    slug = models.SlugField(max_length=200, unique=True)
    contact_email = models.EmailField(null=True, blank=True)
    # for now I have done like this
    followers = models.ManyToManyField(
        User, related_name='followers', blank=True)

现在,你可以看到我已经在投资者中包含了followers字段,但是我也需要在startup中包含follower系统,这样最终用户就可以跟踪startup,反之亦然。同样,在跟随投资者的过程中,只有初创企业可以跟随,但最终用户不应该跟随。你知道吗

最好的解决办法是什么?你知道吗


Tags: namefalsetruemodel投资者models帐户length
1条回答
网友
1楼 · 发布于 2024-09-18 22:11:19

听起来像是要构建连接对象。您想针对这些对象注册用户。所以我可能会重新设计一下你的数据模型。以下是我的想法:

  • 投资者是一组以某个名称命名的用户(Pasadena Angels、XYZ Venture Partners等)
  • Startup是一家拥有一群用户的公司
  • 最终用户是单一用户

但django认证用户可以是“投资者”、“初创企业员工”或“最终用户”。而且,天使投资人更有可能是初创企业的高管员工。有可能,事实上,随着时间的推移,最终用户会成为初创企业的员工,这听起来很有必要。你知道吗

所以我会这样做:

class EndUser(models.Model):
    user = models.OneToOneField(User)
    ...

class Startup(models.Model):
    name = models.CharField(max_length=100)
    ...

class StartupEmployee(models.Model):
    user = models.ForeignKey(User)
    startup = models.ForeignKey(Startup)
    ...

class InvestmentFirm(models.Model):
    name = models.CharField(max_length=100)
    ...

class Investor(models.Model):
    user = models.ForeignKey(User)
    firm = models.ForeignKey(InvestmentFirm)
    ...

class Follower(models.Model):
    user = models.ForeignKey(User)
    startup = models.ForeignKey(Startup, blank=True, null=True)
    firm = models.ForeignKey(InvestmentFirm, blank=True, null=True)
    ...

我的思维过程是,数据模型不需要控制谁可以跟随谁的逻辑。我的思考过程是,应用程序将有单独的视图,可以控制谁可以看到什么。换句话说,数据模型不应该阻止最终用户跟随其他最终用户。这应该是UI/UX的一部分。你知道吗

这是我对推荐信的快速反应。你知道吗

相关问题 更多 >