【发布时间】:2011-04-18 02:17:40
【问题描述】:
我在 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 时才会收到错误。
【问题讨论】:
标签: django django-models django-forms