无法在Django数据库中存储多个图像

时间:2018-07-23 02:49:17

标签: python django

我正在酒店预订网站上工作,在该网站上,我为用户提供了一个选择,可以在该网站上载他们的酒店。由于我对用户有兴趣上传多个没有任何特定限制的图像,我编写了模型,用户成功上传了图像,但是我无法将其存储在数据库中。 我对这个问题感到震惊,过去一周来我已经在网上搜索了所有内容,但仍未解决,请在这个问题上帮助我。

这是我的模特

hotel_rating_choices =(     ('1','1'),     ('2','2'),     ('3','3'),     ('4','4'),     (“ 5”,“ 5”),     ('6','6'),     ('7','7'), )

一流的酒店(型号。型号):

Hotel_Name = models.CharField(max_length=50)
location = models.CharField(max_length=20)
no_of_rooms = models.IntegerField()
rating = models.CharField(max_length=1, choices=hotel_rating_choices, default=3)
hotel_img = models.FileField(upload_to='hotel_images/')
uploaded_at = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True)

def __str__(self):
    return self.Hotel_Name

这是我的表单

类add_hotel(forms.ModelForm):

class Meta:
    model = Hotel
    fields = ('Hotel_Name', 'location', 'rating','no_of_rooms', 'user','hotel_img', )
    # exclude = ['id']
    widgets = {
        'hotel_img' : forms.ClearableFileInput(attrs={'multiple': True})
    }

这是我的观点

BasicUploadView(CreateView)类:

template_name = 'photos/basic_upload/index.html'
model = Hotel
form_class = add_hotel
success_url = reverse_lazy('home')

def get(self, request, *args, **kwargs):

    form = add_hotel
    return render(
            self.request,
            template_name = self.template_name,
            context={'form' : form}
         )

def post(self, request, *args, **kwargs):

    import ipdb
    ipdb.set_trace()
    form = self.form_class(request.POST, request.FILES)
    if form.is_valid():
        photo = form.save()
        data = {'is_valid': True, 'name':photo.hotel_img.name, 'url': photo.hotel_img.url}
        return redirect('home')
    else:
        data = {'is_valid' : False}

    return render(request, self.template_name, {'form': form})

这是我的模板

{% load static from staticfiles %}
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Euphoria booking</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="" />
    <meta name="keywords" content="" />
    <meta name="author" content="" />

    <!-- Icomoon Icon Fonts-->
    <link rel="stylesheet" href="{% static 'css/icomoon.css' %}">

    <!-- Theme style  -->
    <link rel="stylesheet" href="{% static 'css/style.css' %}"> 

    <link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">   

    </head>
<body>

<div style="margin-bottom: 20px;">
<form  method="post" enctype="multipart/form-data">

{% csrf_token %}

<table id="gallery" class="table table-bordered">

  <tbody>
   {% csrf_token %}
    {% for field in form %}
        <tr>
            {{ field.errors }}
            <td> {{ field.label_tag }}</td>
            <td>{{ field  }}</td>
        </tr>
    {% endfor %}
  </tbody>
</table>

<b>For uploading of more hotel photos</b>

<div align="center">
<button type="button" class="btn btn-primary js-upload-photos">
  Upload photos
</button>
  <input id="fileupload" type="file" name="hotel_img" multiple
       style="display: none;"
       data-url="{% url 'basic_upload' %}"
       data-form-data='{"csrfmiddlewaretoken": "{{ csrf_token }}"}'>
</div>

<input type="submit" value="Submit" style="margin-left: 37%;" />

</form>
</div>


<div class="modal fade" id="modal-progress" data-backdrop="static" data-    keyboard="false">
 <div class="modal-dialog">
  <div class="modal-content">
    <div class="modal-header">
      <h4 class="modal-title">Uploading...</h4>
    </div>
    <div class="modal-body">
      <div class="progress">
        <div class="progress-bar" role="progressbar" style="width: 0%;">0%        </div>
      </div>
    </div>
  </div>
 </div>
 </div>

   

     {% block javascript %}
      {# JQUERY FILE UPLOAD SCRIPTS #}
     <script src="{% static 'js/jquery-file-upload/vendor/jquery.ui.widget.js' %}"></script>
    <script src="{% static 'js/jquery-file-upload/jquery.iframe-transport.js' %}"></script>
    <script src="{% static 'js/jquery-file-upload/jquery.fileupload.js' %}"></script>
    <link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
      {# PHOTOS PAGE SCRIPTS #}
      <script src="{% static '/js/progress-bar-upload.js' %}"></script>
     {% endblock %}

 </div>
 </body>

</html>

忽略进度条,css内容,我想知道为什么我无法存储多个图像

Reference

0 个答案:

没有答案