我有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与各自的成员(及其更新)一起包含。