У меня есть две модели: «Флот» и «Корабль». Корабли являются полями ForeignKey флотов:
class Fleet(models.Model):
fleet_ship_n_01 = models.ForeignKey(Ship, on_delete=models.CASCADE, null=True, related_name='fleet_ship_n_01', blank=True)
fleet_ship_n_02 = models.ForeignKey(Ship, on_delete=models.CASCADE, null=True, related_name='fleet_ship_n_02', blank=True)
fleet_ship_n_03 = models.ForeignKey(Ship, on_delete=models.CASCADE, null=True, related_name='fleet_ship_n_03', blank=True)
Корабли также имеют много полей, таких как:
class Ship(models.Model):
ship_class = models.CharField(default='NoClass', max_length=200, help_text="Ship class")
ship_tech_level = models.CharField(default=5, max_length=100, choices=tech_level)
ship_mass = models.PositiveIntegerField(default=0, help_text="Ship mass")
У меня есть вид обновления вкоторый я добавляю корабли к флоту:
class UVFleetDetails(UpdateView):
template_name = 'fading_thrust/fleet_details_form.html'
model = Fleet
form = FleetForm()
total_ship_mass = 0
fields = ('fleet_ship_n_01', 'fleet_ship_n_02', 'fleet_ship_n_03', 'fleet_ship_n_04', 'fleet_ship_n_05',
'fleet_ship_n_06', 'fleet_ship_n_07', 'fleet_ship_n_08', 'fleet_ship_n_09', 'fleet_ship_n_10', )
def form_valid(self, form):
fleet = form.save()
fleet_id = self.kwargs['pk']
fleet.fleet_id = fleet_id
fleet.save()
return redirect('fleet_details', pk=fleet_id)
вот его форма:
class FleetForm(ModelForm):
fleet_ship_n_1 = forms.ModelChoiceField(Ship.objects.all(), required=False)
fleet_ship_n_2 = forms.ModelChoiceField(Ship.objects.all(), required=False)
fleet_ship_n_3 = forms.ModelChoiceField(Ship.objects.all(), required=False)
fleet_ship_n_4 = forms.ModelChoiceField(Ship.objects.all(), required=False)
fleet_ship_n_5 = forms.ModelChoiceField(Ship.objects.all(), required=False)
fleet_ship_n_6 = forms.ModelChoiceField(Ship.objects.all(), required=False)
fleet_ship_n_7 = forms.ModelChoiceField(Ship.objects.all(), required=False)
fleet_ship_n_8 = forms.ModelChoiceField(Ship.objects.all(), required=False)
fleet_ship_n_9 = forms.ModelChoiceField(Ship.objects.all(), required=False)
fleet_ship_n_10 = forms.ModelChoiceField(Ship.objects.all(), required=False)
class Meta:
model = Fleet
fields = ('fleet_ship_n_01', 'fleet_ship_n_02', 'fleet_ship_n_03', 'fleet_ship_n_04', 'fleet_ship_n_05',
'fleet_ship_n_06', 'fleet_ship_n_07', 'fleet_ship_n_08', 'fleet_ship_n_09', 'fleet_ship_n_10',)
Теперь при добавлении кораблей к флоту я хочу отображать также важные детали об этих кораблях. Как ship_class, ship_tech_level, ship_mass и т. Д. Но у меня возникают проблемы с доступом к нему в шаблоне. Ниже часть моего шаблона:
{% for field in form %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{ field }}</td>
<td> ??? How to display ship mass ???</td>
</tr>
{% endfor %}