Как обновить конкретное поле модели из представления Django перед сохранением формы
So, How can I update some Model Fields automatic, without the user having to input the values? In Models:
class Url(models.Model):
long_url = models.CharField("Long Url",max_length=600)
short_url = models.CharField("Short Url",max_length=7)
visits = models.IntegerField("Site Visits",null=True)
creator = models.ForeignKey(CurtItUser,on_delete=models.CASCADE,null=True)
def __str__(self):
return self.short_url
Виды:
def home(request):
"""Main Page, Random Code Gen, Appendage Of New Data To The DB"""
global res,final_url
if request.method == 'POST':
form = UrlForm(request.POST)
if form.is_valid():
res = "".join(random.choices(string.ascii_uppercase,k=7))
final_url = f"127.0.0.1:8000/link/{res}"
form.save()
redirect(...)
else:
form = UrlForm
return render(...)
Как можно, например, установить из моего представления значение short_url в final_url ???
Вы можете получить нужные вам данные из формы. Сначала вам нужно получить конкретный экземпляр, затем вы можете использовать этот экземпляр для сохранения значений из формы. И не забывайте сохранять!
url_instance = get_object_or_404(Url, pk=pk)
url_instance.short_url = form.cleaned_data['short_url']
url_instance.long_url = form.cleaned_data['long_url']
url_instance.visits = form.cleaned_data['visits']
url_instance.save()
Более подробную информацию вы можете найти в Django Documentation.