我尝试获取与用户模型相关的我的Person模型的个人ID
from django.db import models
from django.contrib.auth.models import User
class Person(models.Model):
user = models.ForeignKey(User, blank=False, null=False, on_delete=models.CASCADE)
middle_name = models.CharField(max_length=30)
def __str__(self):
return '%s %s %s' % (self.user.last_name, self.user.first_name, self.middle_name)
从模板生成的页面开始,但我只能获得立即通过身份验证的用户ID
{{ user.id }}
但不提供人员编号。
如何通过页面上的用户ID获取人员ID?
答案 0 :(得分:0)
对于这种关系,我建议使用OneToOneField。
user = models.OneToOneField(User, blank=False, null=False, on_delete=models.CASCADE)
然后您可以使用user.person
答案 1 :(得分:0)
我认为您的模型存在逻辑问题。通常,一个人应该与一个用户建立联系,因此您应该使用OneToOneField
而不是ForeignKey
。我们认为您是正确的,然后可以按照以下代码进行操作;如果不正确,则也可以使用。
您可以通过上下文变量获取它
假设您的person=Person.obejcts.get(id=1)
然后通过
def view(request):
person=Person.obejcts.get(id=1)
context = { 'person':person}
return render(request, 'your.html', context}
在模板中,您可以使用{{person.id}}
答案 2 :(得分:0)
您只需执行obj
即可。假设您知道pk ...如果您实际上只存储1个人和1个用户,然后将{{ user.person_set.get(pk=1) }}
替换为.get()
...您可以使用{{1 }和其他查询集一样进行操作。显然,这假设您有1个用户的多个用户。否则,使用1:1字段会更容易。
答案 3 :(得分:0)
django自动反向查找外键(用户字段),如果要获取人员ID,请尝试使用此getClass().getClassLoader().getResource()