Сохранить пустое поле формы как None в Django - PullRequest
0 голосов
/ 10 марта 2020

У меня есть модель trip, и форма запрашивает outbound flight и inbound flight, которые оба являются ForeignKeys.

Как сохранить 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})

1 Ответ

1 голос
/ 10 марта 2020

Добавьте blank=True к своим in_flight и out_flight

in_flight = models.ForeignKey(..., blank=True)
out_flight = models.ForeignKey(..., blank=True)
...