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中間テーブルを編集するには、のaddandremoveメソッドを使用し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 に答える