我在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时才会出现错误。
答案 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])
我认为你假设你会得到一个对象,当它实际上是你要回来的字符串时。