2

我正在 django 中建立一个用户个人资料,我希望用户在其中输入他的技能集。技能字段是ManyToMany模型名称的字段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)

如您所见,所有字段均已设置null=True。这是因为我将这些字段保持为空,并希望用户在他/她想要的时候输入它们。所以我正在使用 AJAX 调用更新所有这些字段。我已设法编辑所有其他字段,但我不知道如何编辑M2M field

我可以获取链接到个人资料的所有技能列表,profile.skills.all()但我不知道如何更新此列表。我基本上想从这个列表中添加或删除技能对象。我认为使用中有一些东西django.db.models.fields.related.ManyRelatedManager可以编辑该字段

非常感谢任何帮助。我在这个问题上根本没有发现任何东西。有一些关于使用 ModelForm 编辑此字段的信息,但没有关于编辑单个字段的信息。

4

1 回答 1

1

要编辑 m2m 中间表,addremove使用ManyRelatedManager.

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

确实,在 django 文档上谷歌最难的事情是 manytomanyfield 和其他连续字符串。我写博客formfield_for_manytomany只是为了出现在自己的搜索结果中。

于 2012-01-24T20:58:48.643 回答