【发布时间】:2011-01-12 13:17:48
【问题描述】:
我在我的一个视图中使用此代码:
if request.method == 'POST':
vehicle = VehicleForm(request.POST or None)
photos = PhotosFormSet(request.POST or None)
if vehicle.is_valid():
vehicle.save()
photos = PhotosFormSet(request.POST, instance=vehicle)
photos.save()
return HttpResponseRedirect('/vehicles/')
else:
vehicle = VehicleForm()
photos = PhotosFormSet(instance=Vehicle())
return render_to_response('vehicles/vehicles-add-edit.html',
{'vehicle': vehicle, 'photos': photos},
context_instance=RequestContext(request))
但是当我尝试提交表单时出现错误:'VehicleForm' object has no attribute 'pk'。
我已将PhotosFormSet 声明为:
from django.contrib.contenttypes.generic import generic_inlineformset_factory
PhotosFormSet = generic_inlineformset_factory(Photo, extra=10)
那么我的Photo类如下:
class Photo(ImageModel):
name = models.CharField(max_length=100)
original_image = models.ImageField(upload_to='photos')
num_views = models.PositiveIntegerField(editable=False, default=0)
position = models.ForeignKey(PhotoPosition)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
class IKOptions:
spec_module = 'specs'
cache_dir = 'photos'
image_field = 'original_image'
save_count_as = 'num_views'
【问题讨论】:
-
嘿斯蒂芬,我正在做类似的事情,我得到了与你得到的相同的错误,但对于 GET 方法。 "photos = PhotosFormSet(instance=Vehicle())" 如果没有保存,这条线如何工作(在“else”内),因此没有 pk?
标签: django django-forms django-imagekit