通过模板中的用户模型django查询模型

时间:2017-03-30 18:00:05

标签: django django-templates

我有这种情况:

class Package(models.Model):
    title = models.CharField(max_length=200)
    createdBy = models.ForeignKey(User)

class UserProfile(models.Model):
    website = models.URLField()
    user = models.OneToOneField(User)

在我的模板中,我有object个对象,我可以这样做:{{ object.createdBy }}

我可以在模板中执行{{ object.createdBy.userprofile.website }}之类的操作吗?

1 个答案:

答案 0 :(得分:0)

您应该将related_name添加到ForeignKey。

 public static String rec(String s, int n, int m) {
         if(n == 0 && m == s.length() - 1){
             return s;
         } else {
             if (n > 0) {
                 s = s.substring(1);
                 n--;
                 m--;
             }
             if (m < s.length() - 1) {
                 s = s.substring(0, s.length() - 1);
             }
             return rec(s, n, m);
         }
     }

之后,您可以使用related_name参数中指定的名称检索用户的用户配置文件。

class Package(models.Model):
    title = models.CharField(max_length=200)
    createdBy = models.ForeignKey(User)

class UserProfile(models.Model):
    website = models.URLField()
    user = models.OneToOneField(User, related_name='userprofile')

在您的模板中,它将如下所示:

user = User.objects.select_related('userprofile').first()
profile = user.userprofile

如评论中所述,在您的情况下不需要related_name,因为它与相关的型号名称相同。来自docs:

  

如果没有为OneToOneField指定related_name参数,Django将使用当前模型的小写名称作为默认值。