Bulk Create instances using same info but different photos in django admin?
Я работаю с этой моделью Media:
class Media(AbstractCreatedUpdatedDateMixin):
uuid = models.UUIDField(unique=True, default=uuid4, editable=False, db_index=True)
user = models.ForeignKey(User, related_name="uploaded_media", on_delete=models.CASCADE)
title = models.CharField(max_length=255)
location = models.PointField()
image = models.ImageField(upload_to=uuid_directory_path)
category = models.CharField(max_length=9, choices=ContentType.choices())
В некоторых случаях несколько фотографий представляют одну и ту же вещь, поэтому значения user, title, location и category будут одинаковыми, и мне нужна эта функциональность на странице администратора.
Я создал виджет, позволяющий использовать несколько ImageField в форме создания:
class BulkImageWidget(widgets.MultiWidget):
def __init__(self, attrs=None):
_widgets = (
widgets.FileInput(attrs=attrs),
widgets.FileInput(attrs=attrs),
widgets.FileInput(attrs=attrs),
widgets.FileInput(attrs=attrs),
widgets.FileInput(attrs=attrs),
)
super().__init__(_widgets, attrs)
def decompress(self, value):
if value:
return [object for object in value]
return None
def value_from_datadict(self, data, files, name):
return data
Это был просто тест, на самом деле, мне нужно, чтобы этот виджет загружался динамически, и не был ограничен только 5 фотографиями одновременно.
В админке я переопределил наборы форм, связанные с полем Image:
formfield_overrides = {
PointField: {'widget': LocationWidget, "label": _("Location (lng, lat)")},
ImageField: {'widget': BulkImageWidget, "label": _("Images")},
}
Затем я переопределил функцию save_model в ModelAdmin, с повышением исключения, чтобы проверить, как были структурированы данные, чтобы я мог правильно сохранить экземпляры:
class MediaAdmin(admin.ModelAmin):
...
def save_model(self, request, obj, form, change):
raise Exception(request)
Но он никогда не выполняет эту функцию, он бросает No file was submitted. Check the encoding type on the form. и остается на странице формы.
Итак, две проблемы, с которыми я сталкиваюсь:
- Ошибка кодирования после размещения формы
- Невозможно заставить виджеты загружаться динамически inline
Спасибо