Django - обновление вместо сохранения новой формы в БД
У меня есть forms.py, включающий несколько полей.
from django import forms
from .models import TwitterContainer
class TwitterUpdateForm(forms.ModelForm):
class Meta:
model = TwitterContainer
fields = ["Twitter_API_key", "Twitter_API_key_secret", "Twitter_API_token", "Twitter_API_token_secret"]
Это мой models.py
from tkinter import CASCADE
from urllib import request
from django.db import models
from django.contrib.auth.models import User
# Create your models here. twitter_container-app
class TwitterContainer(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
Twitter_API_key = models.CharField(max_length=110, default='default')
Twitter_API_key_secret = models.CharField(max_length=110, default='default')
Twitter_API_token = models.CharField(max_length=110, default='default')
Twitter_API_token_secret = models.CharField(max_length=110, default='default')
def __str__(self):
if not self.user:
return 'Anonymous'
return f'{self.user.username} Twitter Container'
def save(self, *args, **kwargs):
super().save()
"""_summary_
"""
И мой views.py
from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .forms import TwitterUpdateForm
from .models import TwitterContainer
@login_required
def twitter(request):
if request.method == 'POST':
tw = TwitterUpdateForm(request.POST)
if tw.is_valid:
obj = tw.save(commit=False)
obj.user = request.user
obj.save()
messages.success(request, f'NICE!')
return redirect ('twitter')
else:
tw = TwitterUpdateForm()
context = {'tw': tw}
return render(request, 'twitter_container/twitter_container.html', context)
У меня есть сигналы, которые автоматически создают новую форму для нового зарегистрированного пользователя со значениями по умолчанию.
Все работает почти нормально, зарегистрированный пользователь заполняет поля и отправляет форму. Данные попадают в базу данных, и все в порядке. Что я хотел бы сделать, так это вместо того, чтобы каждый раз создавать новую форму для пользователя, я просто хочу обновить значения формы для пользователя.
Например, когда я зарегистрирован как icek, я могу отправить форму 5 раз и в базе данных это будет выглядеть так - https://imgur.com/Og6lzTJ
Я хочу просто обновлять форму, а не отправлять каждый раз новую.