我有模型配置文件和另一个名为'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通过模板获取属于模型的数据时,我错过了什么?
答案 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
。