Djangoでスケジュール管理アプリを構築しようとしているのですが、
manytomanyFieldをhtml上にformという形で表示してそこで入力された値をDBに保存したいのですが、
TypeError: Direct assignment to the forward side of a many-to-many set is prohibited. Use goals.set() instead.
というエラーがでてしまいます。。。
models.py
class Goal(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) name = models.CharField(max_length=50) class Task(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) name = models.CharField(max_length=100) goals = models.ManyToManyField(Goal)
views.py
def addTask(request): form = TaskForm(request.POST or None) if request.method == 'POST': if form.is_valid(): task = Task() # task.save(commit=False) task.name = form.cleaned_data['name'] task.goals = form.cleaned_data['goals'] instance = Task.objects.create( name = task.name, goals = task.goals, )
で実行してみると
TypeError: Direct assignment to the forward side of a many-to-many set is prohibited. Use goals.set() instead.
というエラーが出てしまいます。
いろいろ検索してみたのですが、MOdelForm関係の情報はあったのですが、forms.FormからのmanytomanyFieldの扱い方に関する情報が見つけられず、ここで質問させていただきます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。