Entry.author应该是对User或UserProfile的ForeignKey吗?

时间:2016-01-16 04:53:23

标签: django django-models

在Django中,我想使用活跃用户为QuerySet的{​​{1}}列表来过滤User

我选择扩展following类,而不是将其替换为自定义类,但我不确定这是否是正确的选择。

因此我拥有的是User类,其中UserProfile为其他UserProfiles,ManyToManyFieldOneToOneField

我的User看起来像QuerySetEntry.objects.filter(author__in=request.user.userprofile.following.all())authorForeignKeyField而不是User,所以我即将改变UserProfile代替Entry.author

所以我的问题是,优先级越来越低:

  1. UserProfile改为author是否正确?因为那时我有UserProfile之类的东西,这是不直观的。
  2. 使用具有我需要的数据的自定义类替换内置entry.author.user.username类可能会更好吗?
  3. User的{​​{1}}是UserProfile与其他following而不是ManyToManyField是对的吗?

2 个答案:

答案 0 :(得分:0)

由于您的用户可以互相关注并且条目来自这些人,因此将作者UserProfile设置为使得两个模型在逻辑上处于同一级别是完全合理的

答案 1 :(得分:0)

  1. 我根本不推荐这个。正如你所说,它不直观,一个 作者应该是用户。
  2. 不,与用户建立一对一的关系比创建自定义用户类更好。
  3. 我认为如果将以下内容与用户联系起来会更好看。这样您的原始查询也将起作用。
  4. 在UserProfile模型中:

    following = models.ManyToManyField(User, related_name="followed_by")
    

    在此方案中,user.followed_by是UserProfiles的列表,但user.userprofile.following是用户列表。