Django выбор вариантов с optgroup не может проверить - PullRequest
2 голосов
/ 18 апреля 2011

У меня есть форма в Django с двумя встроенными формами. Один из них дает мне горе. Моя модель такая.

class BookingActivity(models.Model):
    booking = models.ForeignKey('Booking')
    program = models.ForeignKey(Program)
    activity = models.ForeignKey(Activity, choices=programs_as_optgroups())

выбор * ForeignKey activity генерируется с помощью этого метода:

def programs_as_optgroups():
    activities = []
    programs = []
    for program in Program.objects.all():
        new_program = []
        new_activities = []
        for activity in Activity.objects.filter(program=program):
            new_activities.append([activity.id, activity.name])

        new_program = [program.name, new_activities]
        activities.append(new_program)

    return activities

Я пытаюсь добавить <optgroup> теги к своему ForeignKey выбору, который работает. Но когда я отправляю форму, я получаю сообщение об ошибке: Cannot assign "u'3'": "BookingActivity.activity" must be a "Activity" instance.

В этом есть какой-то смысл. Но если я проверю request данные, отправленные из формы сообщения. При выборе либо настройки, либо нет, я получаю одинаковые значения, т.е.

activity = models.ForeignKey(Activity, choices=programs_as_optgroups())

и

activity = models.ForeignKey(Activity)

оба возвращают a u'3' из формы. Но я не могу понять, почему я получаю ошибку, только когда использую optgroups.

1 Ответ

2 голосов
/ 18 апреля 2011

Я предполагаю, что вы пытаетесь

http://dealingit.wordpress.com/2009/10/26/django-tip-showing-optgroup-in-a-modelform/

в блоге

sub_categories.append([sub_category.id, sub_category.name])

у вас есть

new_activities.append([activity.id, activity])

Iдумаю, вы предполагаете, что получите объект, когда на самом деле это строка, которую вы возвращаете.

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