管理パネルで、私のPersonをCompleteClassモデルに追加できます。 CompleteClassとPersonの間にはM2M関係があります。しかし、私のフォームはそれほどうまくいかない。 pub_dateが更新され、head_countは保存できますが、ModelMultipleChoiceField(人物)は保存できません。保存されません。ここでModelMultipleChoiceFieldを持つフォームがデータを保存していません。
models.py
class Person(models.Model):
name = models.CharField(max_length=255)
persona_description = models.CharField(max_length=255)
def __str__(self):
return self.name
class CompleteClass(models.Model):
persons = models.ManyToManyField(Person)
class_name = models.CharField(max_length=255)
class_head_count = models.IntegerField()
class_pub_date = models.DateField()
def __str__(self):
return '%s %s' % (self.class_name, self.class_head_count)
def save_complete_class(self):
self.class_pub_date = timezone.now()
self.save()
class Meta:
ordering = ('class_pub_date',)
はviews.pyです:
def class_new(request):
if request.method == "POST":
form = CompleteClassForm(request.POST)
if form.is_valid():
complete_class = form.save(commit=False)
complete_class.class_pub_date = timezone.now()
complete_class.save()
form.save_m2m()
return redirect('class_detail', pk=complete_class.pk)
else:
form = CompleteClassForm()
return render(request, 'app/class_edit.html', {'form': form})
とforms.py
class CompleteClassForm(forms.ModelForm):
class Meta:
model = CompleteClass
fields = ('class_name', 'class_head_count',)
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
super(CompleteClassForm, self).__init__(*args, **kwargs)
self.fields['class_persons']=forms.ModelMultipleChoiceField(queryset=Person.objects.all())
私はドキュメントを読んで以来、及びsave_m2mを使用しました私はコミット= falseを設定しました。
POSTデータには個人データが含まれていますが、データベースに書き込まれていません。私は困惑している。助けてください!
ちょうど複雑だと思うときは簡単です。簡単です。ありがとうございました。 – Kickasstimus