Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

270
Visualizações
modify unique_together bound form django

I'm trying to modify an existing row of my database, it's a from an intermediary table named "CharacterSkill" with an unique together constraint :

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")

I did a form to change the level but I'm unable to save the form, I have two errors messages from both fields "character" & "skill":

Select a valid choice. That choice is not one of the available choices.

Can you help on that please ? :)

My form :

class SkillCreateForm(forms.ModelForm):
    class Meta:
        model = CharacterSkill
        fields = ('skill','level','character',)

my view :

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,})
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

based on a book, I changed the way I bounded the form to use 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,})
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda