选择组的Django选择选项无法验证

时间:2011-04-18 02:17:41

标签: django django-models django-forms

我在Django中有一个带有两个内联表单的表单。其中一个是让我悲伤。 我的模型是这样的。

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

通过此方法生成activity ForeignKey选项:

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)

都从表单返回u'3'。但我无法弄清楚为什么只有在我使用optgroups时才会出现错误。

1 个答案:

答案 0 :(得分:2)

我猜你在尝试

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])

我认为你假设你会得到一个对象,当它实际上是你要回来的字符串时。