имеется модель:
class FlatSell(models.Model):
#...
class Image(models.Model):
#...
owner = models.ForeignKey(FlatSell, blank=True, null=True)
т.е. к объекту FlatSell могут быть добавлены несколько фото.
теперь как это на практике: юзер давит “добавить FlatSell”, я даю ему форму AddFlatSell для заполнения многих полей FlatSell и ссылочку “добавить фото”, по которой вывожу форму PhotoUploadForm для закачки одного файла фото через , н.п., следующий вид:
def upload(request, owner_id, form_class=PhotoUploadForm,
template_name="upload.html"):
# upload form for photos
#
photo_form = form_class()
if request.method == 'POST':
if request.POST["action"] == "upload":
photo_form = form_class(request.user, request.POST, request.FILES)
if photo_form.is_valid():
photo = photo_form.save(commit=False)
photo.ownerflat = owner_id
photo.save()
request.user.message_set.create(message=_("Successfully uploaded photo '%s'") % photo.title)
return HttpResponseRedirect(reverse('photo_details', args=(photo.id,)))
return render_to_response(template_name, {
"photo_form": photo_form,
}, context_instance=RequestContext(request))
и тут возникают две проблемы:
1) объкт FlatSell еще не создан, ибо submit на форме AddFlatSell еще никто не жал и owner_id еще не определен.
2) уйдя с формы AddFlatSell на PhotoUploadForm надо запоминать введенные поля, чтобы вернуться назад с ними.
Первый вопрос можно решать в лоб, но очень коряво получится:
запоминать Id новой фотографий, н.п. в какой-то временной таблице, потом по submit в AddFlatSell их прикреплять к FlatSell.
А как с формы AddFlatSell уходить по рэфу и запомнить заполненные поля? я еще не придумал.
Вопрос: Как решается вопрос по организации таких схем по уму?