Python 从django中的外键引用模型访问外键值
模型 这是Views.pyPython 从django中的外键引用模型访问外键值,python,django,django-models,django-views,Python,Django,Django Models,Django Views,模型 这是Views.py class Ride(models.Model): type = models.BooleanField(default=False) ride_comment = models.TextField(null=True,max_length=140,blank=True) def __unicode__(self): return self.ride_comment class Driver(models.Model):
class Ride(models.Model):
type = models.BooleanField(default=False)
ride_comment = models.TextField(null=True,max_length=140,blank=True)
def __unicode__(self):
return self.ride_comment
class Driver(models.Model):
ride_id = models.ForeignKey(Ride)
user_id = models.ForeignKey(User)
drv_carseats = models.SmallIntegerField(null=True,blank=False)
def __unicode__(self):
return self.user_id.username
我的模板:
def search(request):
result_list = Ride.objects.all()
return render_to_response('rides/search.html', {'result_list':result_list}, context )
{%for result in result\ u list%}
{%if结果%}
{{result.ride_comment}
{%endif%}
{%endfor%}
我想在模板中显示用户详细信息,即相关骑乘id的驾驶员模型中的用户id和用户名。我不知道如何获取此信息
您设计的方式无法直接访问它。作为一对多的关系 尽管您可以循环使用
result.driver\u set.all
,这将允许您访问驱动程序对象访问权限,并且您可以获取用户id访问权限
{% for result in result_list %}
<li>
{% if result %}
<a href="/rides/ridedetails/{{ result.pk }}">{{ result.type }}</a>
<em>{{ result.ride_comment }}</em>
{% endif %}
</li>
{% endfor %}
{%for result in result\ u list%}
{%if结果%}
{{result.ride_comment}
{result.driver_set.all%中的项的%
{{item.user_id}
{%endfor%}
{%endif%}
{%endfor%}
驾驶员实际上是骑乘设施和用户之间多对多关系的直通表。您应该通过声明一个ManyToManyField on Ride来明确这一点:
{% for result in result_list %}
<li>
{% if result %}
<a href="/rides/ridedetails/{{ result.pk }}">{{ result.type }}</a>
<em>{{ result.ride_comment }}</em>
{% for item in result.driver_set.all %}
{{item.user_id}}
{% endfor %}
{% endif %}
</li>
{% endfor %}
现在,您可以在模板中更直接地访问该关系:
users = models.ManyToManyField(User, through=Driver)
尽管我要重复其他评论所说的话:你们的关系似乎有点倒退,一辆车应该只有一个司机。按照你们设计模型的方式,你的车和司机之间有一对多的关系。这是一次骑行,你有很多司机。这就是你想要的吗?一辆车怎么可能有很多司机?您的关系顺序颠倒了。您好,我已尝试了上述代码,我可以使用此“item.User\u id”获取用户对象的用户名。但我如何访问其他用户属性,如电子邮件。我尝试过类似“item.user\u id.email”,但这不起作用我得到了:)item.user\u id.email给出了电子邮件,之前我在email字段中没有任何值,所以我得到了空值,认为代码不起作用。谢谢
{% for result in result_list %}
...
{% for user in result.users.all %}
{{ user.username }}
{% endif %}