Sadece iki modele ihtiyacınız olacak. Post ve diğeri Görüntüler için olacak. kullanıcı formu yazıyı o doldurarak zaman Her model için bir form oluşturmak için gereken
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',)
, ancak olduğu gibi birbiriyle ilişkili olacaktır: Resminiz modeli Mesaj modeline ForeignKey olurdu bu görev için fazla başarıyla yayınlandı edilecek görüntü formunu doldurmaya vardır ve biz görünümlerinde bunu edecektir ama şimdi ilgili form Şimdi bu her şeyin en önemli parçası olan bu
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',)
gibi görünebilir Görüntülemeler, çünkü tek bir büyüye birden fazla görüntü yüklüyor. Aynı anda birden fazla resim yükleyebilmemiz için birden fazla resim alanına ihtiyacımız var mı? Django formsets'a aşık olduğunuz yer burası. görünümünde
@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))
biz alıyorsanız: Size ben bağlantılı :) Ama burada görünümü gibi görünmelidir nasıl gelmiş Django belgelerinde formsets, okuyabilirsin bunu gerçekleştirmek için django formsets ned olacak Her iki formumuz da, görünüm geçerliyse her iki formu da kontrol edecektir. Bu şekilde, kullanıcı formu doldurmalı ve bu durumda 3 extra=3
olan tüm görüntüleri yüklemelidir. Sadece o zaman posta başarıyla oluşturulur.
Şablon bu o gibi görünmelidir:
<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>
Tek yön deneyin image upload http://koensblog.eu/blog/7/multiple-file-upload-django/ ya da başka bir yol django-ckeditor kullanıyor ve görüntüyü sadecezon s3 belleğinize yükleyen ve sadece resim yükleme eklentisinden birini kullanıyor img etiketi içeriğinize s3 resim konumunuza uygun adresle eklenir –