Как обновить поле M2M в Django с помощью вызова AJAX - PullRequest
2 голосов
/ 25 января 2012

Я создаю профиль пользователя в 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, но ничего о редактировании отдельного поля.

1 Ответ

1 голос
/ 25 января 2012

Чтобы редактировать таблицу-посредник m2m, используйте методы add и remove для ManyRelatedManager.

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

Это правда, самые трудные вещи для GoogleДокументация Django - это множество полей и других непрерывных строк.Я писал в блоге о formfield_for_manytomany исключительно для того, чтобы появляться в результатах поиска для себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...