【问题标题】:Is there a way to seperate the description for the first image and the second image using django?有没有办法使用 django 将第一张图片和第二张图片的描述分开?
【发布时间】:2021-11-13 19:05:50
【问题描述】:

所以对于我的网站来说,上传图片有两个部分,一个是为盒子上传图片,另一个是上传设备的图片,但上传时第一个图片描述与第二个图片描述一起图片描述。示例如下。

上传时发生的情况图片(不是我想要的) 我想要在我的数据库中的图片。

views.py

@login_required()
def ReceptionUnserviceable(request):
    descriptionbox = Photo.objects.all()

    if request.method == 'POST':
        data = request.POST
        images = request.FILES.getlist('images')
        for image in images:
            photo = Photo.objects.create(

                descriptionbox=data['descriptionbox'],
                image=image,
                serialno=data['serialno'],
                partno=data['partno'],
                reception=data['reception'],
                customername=data['customername'],
                descriptionequipment=data['descriptionequipment'],

            )

        return redirect('success')

    context = {}
    return render(request, 'ReceptionUnserviceable.html', context)

models.py

class Photo(models.Model):
    class Meta:
        verbose_name = 'Photo'
        verbose_name_plural = 'Photos'

    image = models.ImageField(null=False, blank=False)
    descriptionbox = models.TextField()
    serialno = models.TextField()
    partno = models.TextField()
    reception = models.TextField()
    customername = models.TextField()
    descriptionequipment = models.TextField()


    def __str__(self):
        return self.descriptionbox

Receptionunservicable.html

     <form method='POST' action="" enctype="multipart/form-data">
                        {% csrf_token %}
                        <div>

                            <label>Description Of The Box</label>
                            <input required name="descriptionbox" type="text" placeholder="Enter a description" style="width:300px" class="form-control">
                        </div>
             <br>
                        <div>
                            <label>Upload Box Photo</label>
                            <input required name="images" type="file" multiple class="form-control-file">
                        </div>
             <br>
             <div>
                 <label>Part Number</label>
                 <input required name="partno" type="text" placeholder="Enter part number" style="width:300px" class="form-control">
             </div>
             <br>
             <div>
                 <label>Serial Number</label>
                 <input required name="serialno" type="text" placeholder="Enter serial number" style="width:300px" class="form-control">
             </div>
             <br>
             <div>
                 <label>Reception</label>
                 <input name="reception" type="text" placeholder="Enter reception number" style="width:300px" class="form-control">
             </div>
             <br>
             <div>
                 <label>Customer Name</label>
                 <input required  name="customername" type="text" placeholder="Enter customer name" style="width:300px" class="form-control">
             </div>
<div>
                 <label>Description Of The Equipment</label>
                 <input required name="descriptionequipment" type="text" placeholder="Enter a description" style="width:300px" class="form-control">
             </div>
             <br>
              <div>
                  <label>Upload Equipment Photo</label>
                  <input required name="images" type="file" multiple class="form-control-file">
              </div>
             <br>
             <button type='submit' style="width: 100px" class="btn btn-primary">Submit</button>
         </form>

它在我的网站上的外观

【问题讨论】:

    标签: html django django-models django-views


    【解决方案1】:

    一种方法是对图像进行不同的命名,以便我们知道哪个用于盒子,哪个用于设备:

    Receptionunservicable.html

    ...
    <input required name="image_box" type="file" multiple class="form-control-file">
    ...
    <input required name="image_equipment" type="file" multiple class="form-control-file">
    ...
    

    重命名后,我们可以分别访问它们并放入适当的描述:

    views.py

    ...
    data = request.POST
    
    file_descriptions = [  # This assumes that both images are tagged with <required>
        {
            "image": request.FILES["image_box"],
            "descriptionbox": data['descriptionbox'],
            "descriptionequipment": "",  # Or better yet make the field <Photo.descriptionequipment> as <null=True> in the model
        },
        {
            "image": request.FILES["image_equipment"],
            "descriptionbox": "",  # Or better yet make the field <Photo.descriptionbox> as <null=True> in the model
            "descriptionequipment": data['descriptionequipment'],
        },
    ]
    
    for file in file_descriptions:
        photo = Photo.objects.create(
            serialno=data['serialno'],
            partno=data['partno'],
            reception=data['reception'],
            customername=data['customername'],
            **file,
        )
    ...
    

    【讨论】:

    • 我明白了,让我试试你的方法,看看效果如何:)
    • 当然,但是我还有一个问题,你知道如何使用 django 将日期和时间保存到数据库中吗?我不知道该怎么做
    • 您可以使用models.DateTimeField 例如some_date = models.DateTimeField()。您可以为其设置的值是 datetime 对象,例如my_model.some_date = datetime(year=2000, month=12, day=25, hour=23, minute=59).
    猜你喜欢
    • 2012-09-21
    • 1970-01-01
    • 2014-02-01
    • 2016-08-13
    • 2016-05-18
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多