Здравствуйте! Я в самом начале пути)
Никак не могу осилить правку уже существующей записи.
Django 3, PostgreSQL
Есть модель, связанная с пользователем через OneToOneField:
class ObjectsOfSurveillance(models.Model):
"""Параметры за которыми следит пользователь"""
user = models.OneToOneField(User, on_delete=models.CASCADE)
btc = models.BooleanField(null=True, blank=True, default=False)
eth = models.BooleanField(null=True, blank=True, default=False)
xrp = models.BooleanField(null=True, blank=True, default=False)
btcaddresses = models.ManyToManyField(BtcAddresses, verbose_name='Адреса')
def __str__(self):
return "Пользователь: {}, \t btc: {}, eth: {}, xrp: {}, Адреса: {}".format(self.user,
self.btc,
self.eth,
self.xrp,
self.btcaddresses)
class Meta:
verbose_name = 'Отслеживаемые параметры'
verbose_name_plural = 'Списки отслеживаемых параметров'
от нее форма:
class ChangeSettingsForm(forms.ModelForm):
""" Форма изменения пользовательских настроек"""
class Meta:
model = ObjectsOfSurveillance # От какой модели будем строить форму
fields = ('btc', 'eth', 'xrp')
и такое представление:
class UserSettingsViews(LoginRequiredMixin, View):
"""Отображение и наверное изменение пользовательских настроек оповещения """
def post(self, request, pk): # Запрос на правку
settings_form = ChangeSettingsForm(request.POST, instance=request.user)
if request.method == 'POST': # Возможно не нужно
if settings_form.is_valid():
settings_form.save()
messages.success(request, 'Настройки успешно обновлены!')
return render(request, 'main/user_settings_pg.html', {'settings_form': settings_form})
def get(self, request): # Запрос на отображение
settings_exist = get_object_or_404(ObjectsOfSurveillance, user_id=request.user.id)
settings_form = ChangeSettingsForm(instance=settings_exist)
return render(request, 'main/user_settings_pg.html', {'settings_form': settings_form})
В шаблоне:
<div class="container">
<h1 class="text-center">Заголовок</h1>
<div class="row justify-content-center">
<div class="col-4">
<div class="card">
<div class="card-body">
<p>Правка пользовательских настроек:</p>
<form action="{% url 'u_s_v' user.id %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ settings_form|crispy }}
<button type="submit" class="btn btn-success">Save changes</button>
</form>
</div>
</div>
</div>
</div>
</div>
Ссылки:
urlpatterns = [
path('', views.exlorer_search_form, name='exlorer_search_form'),
path('user-settings/', views.UserSettingsViews.as_view(), name='UserSettingsViews'),
path('user-settings/<int:pk>/', views.UserSettingsViews.as_view(), name='u_s_v'),
]
После того как кликаю "Save changes", запись в БД не меняется, а хотелось бы...
В чем может быть проблема?