आपको केवल दो मॉडल की आवश्यकता होगी। पोस्ट के लिए एक और दूसरा छवियों के लिए होगा। आपकी छवि मॉडल पोस्ट मॉडल के लिए एक foreignkey होगा:
class Post(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=128)
body = models.CharField(max_length=400)
def get_image_filename(instance, filename):
title = instance.post.title
slug = slugify(title)
return "post_images/%s-%s" % (slug, filename)
class Images(models.Model):
post = models.ForeignKey(Post, default=None)
image = models.ImageField(upload_to=get_image_filename,
verbose_name='Image',)
आप एक मॉडल के लिए एक फार्म बनाने की जरूरत है, लेकिन वे के रूप में एक दूसरे से संबंधित हो जाएगा, जब उपयोगकर्ता प्रपत्र पोस्ट वह को भरना है भी इस पद के लिए छवि पत्र को पूरा करने के लिए सफलतापूर्वक तैनात किया जाना है, और हम करूं कि विचारों में है, लेकिन अब के लिए अपने प्रपत्र अब इस सब कुछ का सबसे महत्वपूर्ण हिस्सा है इस
class PostForm(forms.ModelForm):
title = forms.CharField(max_length=128)
body = forms.CharField(max_length=245, label="Item Description.")
class Meta:
model = Post
fields = ('title', 'body',)
class ImageForm(forms.ModelForm):
image = forms.ImageField(label='Image')
class Meta:
model = Images
fields = ('image',)
की तरह कुछ देख सकते हैं , विचार, क्योंकि यह वह जगह है जहां एक ही जादू में एकाधिक छवियां अपलोड होती हैं। हमारे लिए एक साथ कई छवियों को अपलोड करने में सक्षम होने के लिए, हमें कई छवि फ़ील्ड सही चाहिए? यही वह जगह है जहां आप Django formsets से प्यार करते हैं। हम Django formsets नेड, ऐसा करने के लिए होगा आप Django दस्तावेज में formsets, जो मैं लिंक कर लिया है :) लेकिन यहाँ आपके विचार की तरह दिखना चाहिए कैसे है के बारे में पढ़ सकते हैं:
@login_required
def post(request):
ImageFormSet = modelformset_factory(Images,
form=ImageForm, extra=3)
if request.method == 'POST':
postForm = PostForm(request.POST)
formset = ImageFormSet(request.POST, request.FILES,
queryset=Images.objects.none())
if postForm.is_valid() and formset.is_valid():
post_form = postForm.save(commit=False)
post_form.user = request.user
post_form.save()
for form in formset.cleaned_data:
image = form['image']
photo = Images(post=post_form, image=image)
photo.save()
messages.success(request,
"Yeeew,check it out on the home page!")
return HttpResponseRedirect("/")
else:
print postForm.errors, formset.errors
else:
postForm = PostForm()
formset = ImageFormSet(queryset=Images.objects.none())
return render(request, 'index.html',
{'postForm': postForm, 'formset': formset},
context_instance=RequestContext(request))
ध्यान में रखते हुए हम हो रही है हमारे दोनों रूपों, और दृश्य दोनों रूपों की जांच करेंगे यदि वे मान्य हैं। इस तरह उपयोगकर्ता को फॉर्म भरना होगा और सभी छवियों को अपलोड करना होगा जो इस मामले में 3 extra=3
हैं। तभी पोस्ट सफलतापूर्वक बनाया जाएगा।
आप टेम्पलेट इस तो तरह दिखना चाहिए:
<form id="post_form" method="post" action=""
enctype="multipart/form-data">
{% csrf_token %}
{% for hidden in postForm.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in postForm %}
{{ field }} <br />
{% endfor %}
{{ formset.management_form }}
{% for form in formset %}
{{ form }}
{% endfor %}
<input type="submit" name="submit" value="Submit" />
</form>
एक तरह से कोशिश छवि अपलोड http://koensblog.eu/blog/7/multiple-file-upload-django/ या अन्य तरीका django-ckeditor का उपयोग कर रहा है और इसकी छवि अपलोड प्लगइन का उपयोग करें, जहां छवि आपके अमेज़ॅन एस 3 स्टोरेज पर अपलोड की गई है और केवल img टैग आपकी सामग्री में आपके एस 3 छवि स्थान –