Невозможно сохранить новый элемент базы данных с Foreignkey - PullRequest
0 голосов
/ 11 июля 2019

У меня проблема с приложением 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']

Проблема в том, что я использую набор запросов, чтобы создать список со всеми элементами категории, но когда я хочу сохранить свой элемент, он говорит, что не может назначить набор запросов, потому что это должен быть экземпляр категории:

просмотров.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" должен быть экземпляром "Категория".

Можете ли вы помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 11 июля 2019

ModelMultipleChoiceField не правильный выбор для ForeignKey.
Вместо этого используйте ModelChoiceField.
Подробная информация в документах: https://docs.djangoproject.com/en/2.2/ref/forms/fields/#fields-which-handle-relationships

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...