Я создал несколько форм обновления в своем приложении Django.
Мой вопрос: Django нужно обновлять каждое отдельное поле объекта или есть способ обновить только те поля, которые были действительно изменены?
Так, например, у меня может быть форма с Airport Name
, Airport City
, Airport Country
. И я мог бы использовать форму обновления для обновления Country
. Нужно ли Django также заполнять поля формы Name
и City
и затем обновлять их, или есть способ оставить их пустыми и не обновлять базу данных?
РЕДАКТИРОВАТЬ
Это модель:
class Airport(models.Model):
airport_name = models.CharField(max_length=200, verbose_name="Aeroporto")
airport_city = models.CharField(max_length=200, verbose_name="Cidade")
airport_country = models.CharField(max_length=200, verbose_name="País")
И форма:
class UpdateAirport(ModelForm):
def __init__(self, *args, **kwargs):
super(UpdateAirport, self).__init__(*args, **kwargs)
self.fields['airport_name'].widget = TextInput(attrs={'class': 'form-control'})
self.fields['airport_city'].widget = TextInput(attrs={'class': 'form-control'})
self.fields['airport_country'].widget = TextInput(attrs={'class': 'form-control'})
class Meta:
model = Airport
fields = ('airport_name', 'airport_city', 'airport_country' )
И мой взгляд:
@login_required(login_url='../accounts/login/')
def airport_upd(request, id):
ts = Airport.objects.get(id=id)
if request.method == 'POST':
form = UpdateAirport(request.POST, instance=ts)
if form.is_valid():
form.save()
return redirect('flights')
else:
form = UpdateAirport(initial={'airport_name': ts.airport_name, 'airport_city': ts.airport_city, 'airport_country': ts.airport_country})
return render(request, 'backend/aiport_update.html', {'form': form, 'ts': ts})
И я пользуюсь Postgresql.