私はユーザにスキルセットを入力させたいユーザープロファイルをdjangoに構築しています。スキルフィールドは、モデル名Skills
のManyToMany
フィールドです。あなたはすべてのフィールドがnull=True
を設定されて見ることができるように、以下のmodels.py
ファイルAJAXコールでdjangoのM2Mフィールドを更新するには
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呼び出しを使用してこれらのフィールドをすべて更新しています。私は他のすべてのフィールドを編集することができましたが、私はどのように編集することができないのですか?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