[英]modify unique_together bound form django
我正在嘗試修改數據庫的現有行,它來自中間表“ CharacterSkill”,具有唯一的共同約束:
models.py
class CharacterSkill(models.Model):
character = models.ForeignKey(Character, on_delete=models.CASCADE)
level = models.IntegerField(default=0)
skill = models.ForeignKey(Skill, on_delete=models.CASCADE)
class Meta:
unique_together = ("character","skill")
我做了一個表格來更改級別,但是我無法保存表格,我從“字符”和“技能”兩個字段中都收到了兩條錯誤消息:
Select a valid choice. That choice is not one of the available choices.
你能幫上忙嗎? :)
我的表格:
class SkillCreateForm(forms.ModelForm):
class Meta:
model = CharacterSkill
fields = ('skill','level','character',)
我的觀點 :
def skill_update(request,skillpk,instancepk):
form = SkillCreateForm(request.POST)
user = User.objects.get (id = request.user.id)
instance = Character.objects.get (id = instancepk)
skill = CharacterSkill.objects.get(id = skillpk)
data = {'character' : instance,
'skill' : skill.skill,
'level' : skill.level,
}
if form.is_valid():
form.save()
return redirect('persomaker:skill_list', instance.id)
else:
form = SkillCreateForm(data)
#form.fields['skill'].widget = HiddenInput()
#form.fields['character'].widget = HiddenInput()
return render(request, 'character/create_skill.html',
{'instance':instance,
'skill':skill,
'form': form,})
基於一本書,我更改了將表單限制為使用instance的方式:
def skill_update(request,skillpk,instancepk):
user = User.objects.get (id = request.user.id)
instance = Character.objects.get (id = instancepk)
skill = CharacterSkill.objects.get(id = skillpk)
if request.method == "POST":
form = SkillModifyForm(request.POST,instance = skill,)
print (skill)
if form.is_valid():
form.save()
return redirect('persomaker:skill_list', instance.id)
else:
form = SkillModifyForm(instance = skill,)
return render(request, 'character/create_skill.html',
{'instance':instance,
'skill':skill,
'form': form,})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.