我有一個帶有隱藏輸入的表單,稱為social_color我不需要任何內容??,我需要此輸入在驗證表單內容后分配一個值,以使用其中一個欄位內容執行操作,然后將結果分配給隱藏輸入。
根據這個答案:https ://stackoverflow.com/a/813474/15352101
我可以簡單地做:
if form.is_valid():
form.cleaned_data['Email'] = GetEmailString()
但對我來說使用:
form.cleaned_data["social_color"] = icon_main_color
icon_main_color是我必須做的事情的結果,它是一個包含 3 個值的元組,但是當我用表單檢查創建的物件時,它的值social_color仍然是空的。
編輯:
關注的觀點
@method_decorator(ajax_required, name="get")
class SocialCreationView(View):
ctx = {
"form": SocialCreationForm(),
}
def get(self, request, *args, **kwargs):
return render(request, "social_creation.html", self.ctx)
def post(self, request, *args, **kwargs):
payload = json.loads(request.body.decode())
form = SocialCreationForm(payload)
if form.is_valid():
# Quick binds
social_name = form.cleaned_data["social_name"]
social_icon = form.cleaned_data["social_icon"]
file_extention = None
#blabla
icon_main_color = get_colors(icon_save_path)[0]
if icon_main_color is not None:
form.cleaned_data["social_color"] = icon_main_color
form.save()
return redirect("/")
self.ctx["form"] = form
return render(request, "social_creation.html", self.ctx)
編輯2:
SocialProfile 模型:
class SocialProfile(models.Model):
social_name = models.CharField(default="Unnamed social profile", max_length=100)
social_username = models.CharField(default="Unknow username", max_length=16)
social_icon = models.CharField(default="path/to/social/icon", max_length=250)
social_link = models.CharField(default="https://social.nepmia.fr/", max_length=100)
social_color = models.CharField(max_length=10)
uj5u.com熱心網友回復:
完成此操作的 django 方法是使用instance=form.save(commit=False):
def post(self, request, *args, **kwargs):
payload = json.loads(request.body.decode())
form = SocialCreationForm(payload)
if form.is_valid():
# Quick binds
social_name = form.cleaned_data["social_name"]
social_icon = form.cleaned_data["social_icon"]
# blah blah ...
icon_main_color = get_colors(icon_save_path)[0]
instance=form.save(commit=False) #<--- HERE!!
if icon_main_color is not None:
instance.social_color = icon_main_color #<--- AND HERE!!
instance.save() #<--- AND HERE!!
return redirect("/")
參考從模型檔案創建表單:
如果您使用 commit=False 呼叫 save(),那么它將回傳一個尚未保存到資料庫的物件。在這種情況下,您可以在生成的模型實體上呼叫 save() 。如果您想在保存物件之前對其進行自定義處理,或者如果您想使用專門的模型保存選項之一,這將非常有用。提交默認為真。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420714.html
標籤:
