Проблема с формой администратора Django: Пользовательское поле загрузки файла влияет на несвязанное поле формы
В настоящее время я работаю над проектом Django, в котором я расширил форму администратора, чтобы обеспечить возможность загрузки нескольких файлов. Я следую этой статье. Однако я столкнулся с проблемой, когда мое пользовательское поле загрузки файлов, похоже, влияет на несвязанное поле формы (property_title). В частности, после внедрения пользовательского поля загрузки файла значение property_title меняется на название загруженного изображения.
Вот упрощенная версия моей установки:
- Модели:
from django.db import models
class Property(models.Model):
property_title = models.CharField(max_length=100)
# Other fields
class PropertyImage(models.Model):
property = models.ForeignKey(Property, related_name='images', on_delete=models.CASCADE)
image = models.ImageField(upload_to='property_images/')
- Admin.py:
from django.contrib import admin
from .models import Property, PropertyImage
from .forms import PropertyAdminForm
class PropertyImageInline(admin.TabularInline):
model = PropertyImage
extra = 1
@admin.register(Property)
class PropertyAdmin(admin.ModelAdmin):
inlines = [PropertyImageInline]
def save_model(self, request, obj, form, change):
obj.save() # Save the main property object
# Handle the multiple image uploads
for afile in request.FILES.getlist('photos_multiple'):
PropertyImage.objects.create(property=obj, image=afile)
- Change_form.html:
{% extends "admin/change_form.html" %}
{% block inline_field_sets %}
{% for inline_admin_formset in inline_admin_formsets %}
{% include inline_admin_formset.opts.template %}
{% endfor %}
<fieldset class="module">
{% comment %} <label for="id_photos_multiple">Upload Multiple Photos:</label> {% endcomment %}
<h2>Upload Photos</h2>
<input name="photos_multiple" type="file" multiple accept="image/*" />
</fieldset>
{% endblock %}
Как я могу реализовать эту настройку, чтобы я мог загружать несколько изображений, не влияя на другие поля формы.
Проблема, которую я выяснил, заключается в том, что атрибут name поля ввода для загрузки нескольких файлов - photos_multiple, который напрямую не связан ни с одним полем в вашей модели Property. Однако, когда я загружаю файл, админка Django, возможно, интерпретирует ввод и неправильно ассоциирует его с полем property_title из-за того, как обрабатываются данные формы. Я попытался сделать property_tile доступным только для чтения. В этом случае оно перезаписывает другое доступное поле. Я не могу понять, как решить эту проблему.