我对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”实例。
您能帮我解决这个问题吗?
答案 0 :(得分:0)
ModelMultipleChoiceField
不是ForeignKey
的正确选择。
请改用ModelChoiceField
。
文档上的详细信息:https://docs.djangoproject.com/en/2.2/ref/forms/fields/#fields-which-handle-relationships