Подтвердить что ты не робот

Джанго. Недопустимый аргумент ключевого слова для этой функции. ManyToMany

У меня есть эта ошибка:

"people" - недопустимый аргумент ключевого слова для этой функции

class Passage(models.Model):
    name= models.CharField(max_length = 255)
    who = models.ForeignKey(UserProfil)

class UserPassage(models.Model):
    passage = models.ForeignKey(Passage)
    people = models.ManyToManyField(UserProfil, null=True)

class UserProfil(models.Model):
    user = models.OneToOneField(User)
    name = models.CharField(max_length=50)

Я пытаюсь:

def join(request):
    user = request.user
    user_profil = UserProfil.objects.get(user=user)
    passage = Passage.objects.get(id=2)
    #line with error
    up = UserPassage.objects.create(people= user_profil, passage=passage)
    return render_to_response('thanks.html')

Как это сделать правильно? Спасибо!

4b9b3361

Ответ 1

Вам нужно сохранить/создать объект, прежде чем добавлять ManyToMany отношения:

up = UserPassage.objects.create(passage=passage)
up.people.add(user_profil)

ManyToMany отношения не сохраняются как столбцы в вашей таблице. Прочтите первый ответ здесь для хорошего объяснения:

Поле Django ManyToMany не создано в модели

@DanielRoseman: Поскольку ManyToMany не является полем, по крайней мере, не тот, который существует как столбец базы данных. Это отношения со связующим столом. Вы обнаружите, что была создана таблица с именем myapp_teacher_subjects с внешними ключами как для преподавателя, так и для предметов.