无法使用外键保存新的数据库项目

时间:2019-07-11 11:21:16

标签: django django-queryset

我对Django应用有问题。 我有一种形式来添加新的类别,另一种形式来添加子类别。 子类别具有类别的外键,您可以在下面找到models.py:

models.py

    nom = models.CharField(primary_key=True, max_length=100)
    description = models.TextField(blank=True)


class SousCategorie(models.Model):
    nom = models.CharField(primary_key=True, max_length=100)
    categorie = models.ForeignKey(Categorie, on_delete=models.DO_NOTHING)
    description = models.TextField(blank=True)

我有一个表单,可以在forms.py中创建新的子类别项

    nom = forms.CharField()
    categorie = forms.ModelMultipleChoiceField(queryset=Categorie.objects.all())
    description = forms.CharField()

    class Meta:
        model = SousCategorie
        fields = ['nom', 'categorie', 'description']

问题是我使用查询集来列出所有类别项目,但是当我要保存项目时,它说无法分配查询集,因为它必须是类别实例:

views.py

    form = SousCategorieForm(request.POST)

    nom = request.POST["nom"]
    categorie = request.POST["categorie"]
    description = request.POST["description"]

    souscategorie = form.save(commit=False)
    souscategorie.nom = nom
    souscategorie.categorie = categorie
    souscategorie.description = description
    souscategorie.save()

错误:

  

无法分配“]>”:“ SousCategorie.categorie”必须是“ Categorie”实例。

您能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

ModelMultipleChoiceField不是ForeignKey的正确选择。
请改用ModelChoiceField
文档上的详细信息:https://docs.djangoproject.com/en/2.2/ref/forms/fields/#fields-which-handle-relationships

相关问题