我有mu模型:
class Profile(models.Model):
user = models.OneToOneField(User, blank=True, null=True)
phone_number = models.CharField(max_length=20, blank=True, null=True)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
is_administrator = models.BooleanField(default=False)
def __str__(self):
return '{0}\'s profile'.format(self.user.username)
class Company(models.Model):
created_date = models.DateTimeField(default=timezone.now, null=True)
name = models.CharField( max_length=200)
class Invitation(models.Model):
created_date = models.DateTimeField(default=timezone.now, null=True)
date = models.ManyToManyField(Date)
speaker = models.ForeignKey(Speaker, on_delete=models.CASCADE)
invited_to = models.ForeignKey(Company, on_delete=models.CASCADE)
talk = models.ManyToManyField(Talk)
def __str__(self):
return self.speaker.name + ' by ' + self.invited_to.name
class Speaker(models.Model):
name = models.CharField(max_length=200, blank=False, null=True)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
talk = models.ManyToManyField(Talk)
所以在我看来,我发送了invites = Invitation.objects.all()
我在模板中需要的是访问个人资料的名称:Invitation.invited_to.Company.Profile.name,以及Invitation.speaker.Company.Profile.name。
有没有任何方法可以做到这一点?
答案 0 :(得分:1)
使用您的数据库结构,您将能够获得模板中与公司关联的所有发言人和个人资料,但您将无法获得特定的个人资料。
获取您可以使用的所有配置文件:
{% for invite in invites %}
{% for profile in invite.invited_to.company.profile_set.all %}
{{ profile.user.first_name }} {{ profile.user.last_name }}
{% endfor %}
{% endfor %}
这应该为您提供已被邀请的公司中的每个个人资料的名称。
你可以做类似的事情来获得公司的所有发言人。
{% for invite in invites %}
{% for profile in invite.speaker.company.profile_set.all %}
{{ profile.user.first_name }} {{ profile.user.last_name }}
{% endfor %}
{% endfor %}
对您正在尝试的内容进行猜测,我想您实际上想要在模板中使用{{ request.user }}
来获取登录用户或传递个人资料对象到模板。