至少有兩個可能的答案:
A.使用兩種形式,並將其張貼到了同樣的觀點。先保留Data
對象,然後創建Photo
對象而不將其提交到數據庫,將數據屬性分配給data
實例,然後在photo
實例(以下提供示例)上調用.save()
。
B.使用內嵌模型表單集:https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets
[編輯]
class Data(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField()
class Photo(models.Model):
photo = models.ImageField(upload_to='img')
data = models.ForeignKey(Data)
class DataForm(forms.ModelForm):
class Meta:
model = Data
class PhotoForm(forms.ModelForm):
class Meta:
model = Photo
exclude = ('data',)
def your_view(request):
data_form = DataForm(request.POST or None)
photo_form = PhotoForm(request.POST or None, request.FILES or None)
if request.method == 'POST':
if data_form.is_valid() and photo_form.is_valid():
data = data_form.save()
photo = photo_form.save(commit=False)
photo.data = data
photo.save()
# do something else here, like a redirect to another view.
return render(request, 'your-template.html',
{'data_form': data_form, 'photo_form': photo_form})
確保您的形式使用:multipart/form-data
作爲加密類型,或request.FILES
將是空的。
MEH,東西長約在線表單集,我想。看看https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets – dmg 2013-02-21 15:54:09