模型关系失败,无法获取模板中的数据

时间:2017-10-02 10:04:20

标签: python django

我有模型配置文件和另一个名为'Nation'的模型,此模型将Profile和User视为ForeignKeys。

就像这样,

RENAME

此处的逻辑是检查用户类型并显示与用户模型相关的字段“值”。为此,我们认为用户属于Nation模型,因此要获得他的参考号,

在视图中,我做了

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    user_type=models.CharField(max_length=10, choices=M_CHOICES)

class Nation(models.Model):
    user= models.ForeignKey(User, related_name='natuser')
    profile = models.ForeignKey(Profile, related_name='nat_hr')
    ref_number = models.CharField(max_length=20, default=pm_tag)
在模板中

,在检查用户类型属于Nation模型后,我编写了下面的代码来获取用户ref_number,但它失败了。

@login_required
def profile_detail(request, username):
    user= get_object_or_404(User, username=username)
    try:
        the_detail= user.profile
    except ObjectDoesNotExist:
        return None

使用related_name通过模板获取属于模型的数据时,我错过了什么?

2 个答案:

答案 0 :(得分:1)

在您的情况下,一个Profile可以有多个Nation个。因此,你应该使用for循环来打印它们中的每一个:

{% for nation in the_detail.nat_hr.all %}
    {{nation.ref_number}}
{% endfor %}

希望它有所帮助!

答案 1 :(得分:0)

您的Profile可以有多个Nation个对象,因为ForeignKey实现了多对一关系(ForeignKey)。您可以为当前Nations设置Profile