от
Я использую UpdateView для модели, включающей FileFields, но когда я пытался обновить файлы, он изменяет только базу данных, а не базу данных и фактический каталог. Например: если у меня есть три файла в моем медиа-корне (media / uploads / id), когда я использую UpdateView для замены одного из них, база данных работает нормально, но в моем медиа-корне будет четыре файла, которые включают новый файл без удаления старого.
def upload_to(instance, filename):
    return 'uploads/{id}/{fn}'.format(id=instance.pk,fn=filename)

class Mechanism(models.Model):
    """
    A chemical kinetic mechanism, from Chemkin or Cantera
    """
    ck_mechanism_file = models.FileField(upload_to=upload_to, max_length=100, blank=True, null=True,
                                       verbose_name="Chemkin mechanism file")
    ck_thermo_file = models.FileField(upload_to=upload_to, max_length=100, blank=True, null=True,
                                       verbose_name="Chemkin thermo file")
    ck_transport_file = models.FileField(upload_to=upload_to, max_length=100, blank=True, null=True,
                                       verbose_name="Chemkin transport file")
    ck_surface_file = models.FileField(upload_to=upload_to, max_length=100, blank=True, null=True,
                                       verbose_name="Chemkin surface file")
    ct_mechanism_file = models.FileField(upload_to=upload_to, max_length=100, blank=True, null=True,
                                        verbose_name='Cantera yaml file')
    ct_conversion_errors = models.TextField(verbose_name='Errors from the ck2yaml conversion')
    timestamps = models.DateTimeField(auto_now_add=True)

class MechanismObjectMixin(object):
    model = Mechanism
    def get_object(self):
        pk = self.kwargs.get('pk')
        obj = None
        if pk is not None:
            obj = get_object_or_404(self.model, pk=pk)
        return obj

class MechanismUpdateView(MechanismObjectMixin, View):
    template_name="file_update.html"
    def get(self, request, id=id, *args, **kwargs):
        context = {}
        obj = self.get_object()
        if obj is not None:
            form = ChemkinUpload(instance=obj)
            context['object'] = obj
            context['form'] = form
        return render(request, self.template_name, context)

    def post(self, request, *args, **kwargs):
        obj = self.get_object()
        form = ChemkinUpload(request.POST, request.FILES, instance=obj)
        if form.is_valid():
            form.save()
            url = reverse_lazy('mechanism

{% extends 'base.html' %}

{% block content %}
Update: {{object.pk }}

<form action='update' method='POST' enctype="multipart/form

Я хочу, чтобы новый файл заменил старый файл в медиа-корне, вместо этого просто добавив новый файл в мой медиа-корень.
    

        

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...