Web api:检索m2m模型与检索主模型

时间:2015-05-26 19:21:08

标签: views models m2m

我有一个代码设计问题。假设我们有一个带有Web服务的web应用程序(rest api)以及模型User,Job和JobFavorite。 JobFavorite模型是一个m2m模型,包含用户和作业字段,这意味着用户可以将作业标记为收藏。

让我们说我们有两个观点。

  1. 作业列表视图,用户可以在其中查看所有可用的作业。

  2. 过滤的作业列表视图,用户只能看到标记为收藏的作业。

  3. 在两个视图中,用户都可以执行相同的操作:申请工作和(联合国)将工作标记为收藏。

    在第一个视图中,我们对api进行ajax调用以检索所有可用的作业。问题与第二种观点有关。

    我们应该调用作业api并检索作业模型,还是应该调用JobFavorite api并检索JobFavorite模型,然后在模板中使用JobFavorite.job字段?

    我希望问题清楚,并遵循规则。

    更新:伪代码中的类:

    class Job():
        owner - foreign key(User)
        ...etc
    
    class JobFavorite():
        user - foreign key(User)
        job  - foreign key(Job)
    
    class User():
        name
        phone
    

1 个答案:

答案 0 :(得分:0)

在这种特殊情况下,除非绝对必要,否则我不会在前端使用新模型/ api /控制器(JobFavourite)使问题复杂化。我会做出最喜欢的"在Job的控制器上过滤。

因此,在过滤的作业列表视图中,您调用GET / jobs?favorites = true以仅获得受欢迎的用户作业。然而,在后端,这可以使用不同的策略来实现。您可以使用单独的JobFavourite模型来存储收藏夹。或者在User模型上创建json / array字段来存储他的收藏夹(谨慎使用后两者)。

这个建议也有另一个积极意义。治疗is_favourite" flag"作为过滤器,您可以统一使用作业(这里很容易应用另一个过滤器)。