Как обновить конкретное поле модели из представления 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.

Вернуться на верх