私はm2m関係を保存することに感銘を受けました。
models.py
class BasicTag(models.Model):
name = models.CharField(max_length=150, verbose_name="Tag Name")
image_class = models.CharField(max_length=30, blank=True)
color = models.CharField(max_length=10, blank=True)
def __unicode__(self):
return self.name
class ExtendedTag(models.Model):
parent = models.ManyToManyField(BasicTag, blank=True,
related_name="parent")
category = models.ManyToManyField(BasicTag, blank=True,
related_name="category")
def __unicode__(self):
return self._id
class CombineTag(BasicTag, ExtendedTag):
"""
"""
フォーム.py
class CombineTagForm(forms.ModelForm):
class Meta:
model = CombineTag
フォームを次のように初期化すると
>form = CombineTagForm({"name":"shyam"})#this don't have any parent i.e. root tag
>form.is_valid()
True
>instance = form.save(commit = False)
>instance.save()
>form.save() #return errors
#error
ProgrammingError: column tag_extendedtag_parent.basictag_id does not exist
LINE 1: DELETE FROM "tag_extendedtag_parent" WHERE "tag_extendedtag_...
>form.save_m2m() #return errors ... struck here
では、m2mフィールドのモデルフォームを保存するにはどうすればよいですか。私はそれを言う公式文書に従っていました
モデルに多対多の関係があり、フォームを保存するときに commit=False を指定した場合、Django は多対多の関係のフォーム データをすぐに保存できません。これは、インスタンスがデータベースに存在するまで、インスタンスの多対多データを保存できないためです。
しかし、ここで何が欠けているのかを理解できませんでした。