如何通过AJAX调用更新django中的M2M字段

时间:2012-01-24 20:36:25

标签: ajax django many-to-many manyrelatedmanager

我正在django中构建用户个人资料,我希望用户输入他的技能。技能字段是模型名称ManyToMany的{​​{1}}字段。下面显示了Skills文件

models.py

如您所见,所有字段都设置为class UserProfile(models.Model): name = models.CharField(max_length = 300, null = True, blank=True) location = models.CharField(max_length=500, null=True, blank=True) birthday = models.DateField(null = True, blank = True) user = models.ForeignKey(User, unique=True) skills = models.ManyToManyField(Skill, blank=True, null=True) class Skill(models.Model): name = models.CharField(max_length=50) def __unicode__(self): return u'%s' %(self.name) 。这是因为我将字段保持为空并希望用户在他/她想要的时候输入它们。所以我使用AJAX调用更新所有这些字段。我已设法编辑所有其他字段,但我不知道如何编辑null=True

我可以使用M2M field获取与个人资料相关联的所有技能的列表,但我不知道如何更新此列表。我基本上想要从这个列表中添加或删除技能对象。我认为profile.skills.all()中有一些东西可以用来编辑字段

非常感谢任何帮助。我还没有找到关于这个主题的任何内容。有一些关于使用ModelForm编辑此字段的信息,但没有关于编辑单个字段的信息。

1 个答案:

答案 0 :(得分:1)

要编辑m2m中间表,请使用add上的removeManyRelatedManager方法。

https://docs.djangoproject.com/en/1.3/ref/models/relations/#django.db.models.fields.related.RelatedManager.add

确实,django docs上google最困难的事情是manytomanyfield和其他连续字符串。我发表了关于formfield_for_manytomany的博文,仅仅是出现在我自己的搜索结果中。