如何在Django中查询和构建共享公共外键的模型

时间:2018-07-23 04:58:57

标签: django django-models django-templates

我有2个在两个不同的应用程序中共享外键的模型,需要从中进行查询。

在“帐户”应用中,我具有以下模型:

class UserProfile(models.Model):
    user             = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True)
    profile_image    = models.ImageField(upload_to='images/', null=True, default=None)

import teams.models as tm

class TeamStarred(models.Model):
    user                 = models.ForeignKey(User, on_delete=models.CASCADE, default=None)
    team                 = models.ForeignKey(tm.Team, on_delete=models.CASCADE, default=None)
    date_began_following = models.DateField()

在“团队”应用中,我具有以下模型:

class Team(models.Model):
    name = models.CharField(max_length=100, default=None)

class TeamUpdate(models.Model):
    team   = models.ForeignKey(Team, on_delete=models.CASCADE, default=None)
    member = models.ForeignKey(User, on_delete=models.PROTECT, default=None)
    date   = models.DateTimeField(auto_now_add=True)

在第三个应用程序的视图中:

import teams.models    as tm
import accounts.models as am

 def home(request):
    if request.user.is_authenticated:

在TeamUpdate中,我需要按降序排列的前3位(团队所在的位置(用户== request.user的TeamStarred))以及这些选定TeamUpdate中成员的profile_image。

到目前为止,我已经尝试过:

team_updates = tm.TeamUpdate.objects.filter(team__in = am.TeamStarred.objects.filter(user=request.user).values('team'))

检索所有更新 和

member_update = am.UserProfile.objects.filter(user__in = team_updates.values('member'))

检索所有UserProfiles(包含成员的profile_images)。

这似乎不是执行此操作的正确方法,并且当将两者都作为字典传递给html时,很难将正确的profile_image与正确的成员进行匹配:

return render(request, 'mainsite/home.html', {'starred_team_updates': team_updates, "user_profiles": member_update})

理想情况下,所有团队更新信息和profile_image都将在一个对象的单个数组中,这些对象将通过单个字典传递,其中成员的profile_images与各自的成员(及其更新)一起包含。

0 个答案:

没有答案