在 Django 中将空表单字段保存为 None
Save empty form field as None in Django
我有一个 trip
模型,表单要求 outbound flight
和 inbound flight
,它们都是外键。
如果没有选择航班并且实际上允许此表单字段为空,我如何将 inbound flight
保存为 None
。
这是我的表格:
class NewTrip(ModelForm):
def __init__(self, *args, **kwargs):
super(NewTrip, self).__init__(*args, **kwargs)
self.fields['trip_id'].widget = TextInput(attrs={'class': 'form-control'})
self.fields['destination'].widget = TextInput(attrs={'class': 'form-control'})
self.fields['client'].queryset = Clients.objects.all()
class Meta:
model = Trip
fields = ('trip_id', 'destination', 'client', 'out_flight', 'hotel', 'in_flight')
这是我的模型:
class Trip(models.Model):
trip_id = models.CharField(max_length=20, verbose_name="Ref. Viagem")
destination = models.CharField(max_length=200, null=True, verbose_name='Destino')
client = models.ForeignKey(Clients, null=True, on_delete=models.CASCADE, verbose_name="Cliente")
out_flight = models.ForeignKey(Flight, related_name="outbound_flight" ,null=True, on_delete=models.SET_NULL, verbose_name="Voo Ida")
hotel = models.ForeignKey(Hotels, null=True, on_delete=models.SET_NULL, verbose_name="Hotel")
in_flight = models.ForeignKey (Flight, related_name="inbound_flight", null=True, on_delete=models.SET_NULL, verbose_name="Voo Regresso")
这是视图:
def newtrip(request):
if request.method == 'POST':
form = NewTrip(request.POST)
if form.is_valid():
form.save()
return redirect('trips')
else:
form = NewTrip()
return render(request, 'backend/new_trip.html', {'form': form})
将 blank=True
添加到您的 in_flight 和 out_flight
in_flight = models.ForeignKey(..., blank=True)
out_flight = models.ForeignKey(..., blank=True)
我有一个 trip
模型,表单要求 outbound flight
和 inbound flight
,它们都是外键。
如果没有选择航班并且实际上允许此表单字段为空,我如何将 inbound flight
保存为 None
。
这是我的表格:
class NewTrip(ModelForm):
def __init__(self, *args, **kwargs):
super(NewTrip, self).__init__(*args, **kwargs)
self.fields['trip_id'].widget = TextInput(attrs={'class': 'form-control'})
self.fields['destination'].widget = TextInput(attrs={'class': 'form-control'})
self.fields['client'].queryset = Clients.objects.all()
class Meta:
model = Trip
fields = ('trip_id', 'destination', 'client', 'out_flight', 'hotel', 'in_flight')
这是我的模型:
class Trip(models.Model):
trip_id = models.CharField(max_length=20, verbose_name="Ref. Viagem")
destination = models.CharField(max_length=200, null=True, verbose_name='Destino')
client = models.ForeignKey(Clients, null=True, on_delete=models.CASCADE, verbose_name="Cliente")
out_flight = models.ForeignKey(Flight, related_name="outbound_flight" ,null=True, on_delete=models.SET_NULL, verbose_name="Voo Ida")
hotel = models.ForeignKey(Hotels, null=True, on_delete=models.SET_NULL, verbose_name="Hotel")
in_flight = models.ForeignKey (Flight, related_name="inbound_flight", null=True, on_delete=models.SET_NULL, verbose_name="Voo Regresso")
这是视图:
def newtrip(request):
if request.method == 'POST':
form = NewTrip(request.POST)
if form.is_valid():
form.save()
return redirect('trips')
else:
form = NewTrip()
return render(request, 'backend/new_trip.html', {'form': form})
将 blank=True
添加到您的 in_flight 和 out_flight
in_flight = models.ForeignKey(..., blank=True)
out_flight = models.ForeignKey(..., blank=True)