我正在从服务器中获取postgresql数据,并填写下表。 我能够连接3个不同的表并从中获取我想要的列。
但是,它给了我没有格式的对象。有什么办法可以使用联接查询一个接一个地填写表格吗??
views.py
vlan_query_results = Vlans.objects.select_related('vlan_id').values_list('name', 'gateways__vip', 'gateways__backup', 'gateways__master', 'gateways__nat', 'gateways__vhid', 'subnets__dhcp', 'subnets__dns').order_by('vlan_id')
模板
{% for object in vlan_query_results %}
<tr #id='items-table'>
<th scope="row" class="checkbox-row"><input type="checkbox" name="item" /></th>
<th scope="row">{{ forloop.counter }}</th>
<td class="item"> {{object }}</td>
<td class="item"> </td>
</tr>
{% endfor %}
答案 0 :(得分:0)
也许应该改用values_list
,而应使用DRF序列化程序在仅包含所需字段的字典(如结构)中获取响应。
from rest_framework import serializers
class VlansSerializer(serializers.ModelSerializer):
gateways_vip = serializers.ReadOnlyField(source='gateways__vip')
gateways_backup = serializers.ReadOnlyField(source='gateways__backup')
gateways_master = serializers.ReadOnlyField(source='gateways__master')
gateways_nat = serializers.ReadOnlyField(source='gateways__nat')
gateways_vhid = serializers.ReadOnlyField(source='gateways__vhid')
subnets_dhcp = serializers.ReadOnlyField(source='subnets__dhcp')
subnets_dns = serializers.ReadOnlyField(source='subnets__dns')
class Meta:
model = Vlans
fields = ('name', 'gateways_vip', 'gateways_backup', 'gateways_master', 'gateways_nat', 'gateways_vhid', 'subnets_dhcp', 'subnets_dns')
在您的views.py中:
vlan_query_results = VlansSerializer(Vlans.objects.all(), many=True).data
在您的html中:
{% for object in vlan_query_results %}
<tr>
<th scope="row" class="checkbox-row">
<input type="checkbox" name="item" />
</th>
<th scope="row">{{ forloop.counter }}</th>
<td class="item">{{object.name}}</td>
<td class="item">{{object.gateways_vip}}</td>
</tr>
{% endfor %}
您必须以类似方式添加其余<td></td>
标签。
另外,您无法将#id='items-table'
添加到<tr>
中,因为它处于循环中,并且id在html页面中应该是唯一的。
希望这会有所帮助。 :)