【问题标题】:modify unique_together bound form django修改unique_together绑定表单django
【发布时间】:2017-04-21 08:18:48
【问题描述】:

我正在尝试修改数据库的现有行,它来自名为“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,})

【问题讨论】:

    标签: python django


    【解决方案1】:

    根据一本书,我改变了绑定表单的方式以使用实例:

    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,})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-27
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      相关资源
      最近更新 更多