Добрый день, на сайте сделал функцию добавления телеграм адреса. Само добавление не обязательное по этому случилась проблема, когда форма пустая а пользователь жмет "сохранить настройки" то сохраняется пустая строчка в бд которая стирая прошлую. Вопрос - Как отключить возможность сохранять пустую строку если в бд уже есть строка, но не включая поле в обязательные для заполнения или как в строку добавить html тег value с уже сохранённой из бд строчкой в поле ввода.
views
from django.shortcuts import render
from .forms import Telegramform
from .models import Profile
# Create your views here.
def settingsprofiles(request):
error = ''
if request.method == "POST":
form = Telegramform(request.POST)
if form.is_valid():
profile = form.save(commit=False)
profile.user = request.user
profile.id = request.user.id
profile.email = request.user.email
w = Profile.objects.get(id=profile.id)
profile.btcadress = w.btcadress
form.save()
else:
error = "Ошибка, телеграм не был изменен"
form = Telegramform()
data = {
'form': form,
'error': error,
}
return render(request, 'profiles/settings.html', data)
html
<div class="bg-white p-5 rounded shadow ml-auto mr-auto mt-5 ">
<div class="text-center">
<h1>Ваш профиль</h1>
</div>
<hr>
<div class="text-center">
<h1>Настройки профиля</h1>
</div>
<form method="post">
{% csrf_token %}
<label class="fw-normal mt-1">Телеграм (необязательно):</label>
{{ form.telegram }}
<span>{{ error }}</span>
<button class="btn btn-lg btn-success mt-3" type="submit"><i class="fas fa-save"></i> Сохранить</button>
</form>
</div>
forms
from .models import Profile
from django.forms import ModelForm, TextInput
class Telegramform(ModelForm):
class Meta:
model = Profile
fields = ['telegram']
widgets = {
'telegram': TextInput(attrs={
'class': 'form-control',
'placeholder': '@Телеграм',
}),
}
models
class Profile(models.Model):
user = models.OneToOneField(User, verbose_name='Пользователь', on_delete=models.CASCADE)
telegram = models.CharField("Телеграм", blank=True, null=True, max_length=50)
email = models.CharField("Почта", blank=True, null=True, max_length=50)
btcadress = models.CharField("Биткоин адресс", blank=True, null=True, max_length=50)