我建立一個用戶配置文件在Django,在這裏我希望用戶輸入他的技術更新在Django一個M2M領域。技能字段爲ManyToMany
字段,型號名稱爲Skills
。下面顯示的是models.py
文件如何通過AJAX調用
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編輯此字段的信息,但沒有關於編輯單個字段的信息。
我想我已經錯誤地表述我的問題,我不想要編輯的技巧對象本身,但我想編輯的M2M領域的剖面模型,通過編輯我的意思是我想添加或刪除'skill'對象我的'profile.skills' – Sachin
哦,我的錯! 'profile.skills.add(object_id)'和'profile.skills.remove(object_id)'將增加和刪除技能。你可以通過'profile.skills.through'這只是另一種的Django模型 –
我不明白我怎麼能過濾它們通過'profile.skills.through'能否請您給我一個鏈接,直接過濾。非常感謝您的幫助 – Sachin