Как передать дополнительные данные в метод post_ajax? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть модели:

class MyModelOne(models.Model):
    title = models.CharField(verbose_name=_('Title'), max_length=255)
    body = models.TextField(verbose_name=_('Body'))
    # some other fields


class MyModelTwo(models.Model)
    title = models.CharField(verbose_name=_('Title'), max_length=255)
    # some other fields


class Photo(models.Model):
    title = models.CharField(verbose_name=_('Title'), max_length=255)
    image = StdImageField(verbose_name=_('Image'),upload_to='photos')
    content_type = models.ForeignKey(ContentType,on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

Я хочу включить поле dropzone (DropzoneJS) для создания объектов Photos внутри администратора, изменять представления некоторых других моделей при обновлении их объектов.Я использую представление ajax для независимой обработки его в форме представления изменения администратора.

Чтобы создать объект Photo, мне нужно передать данные обновленного объекта другой модели в метод post_ajax.

Я не знаю, как распознать текущую объектную модель и ее идентификатор в методе post_ajax, где я хочу обработать создание фотографий.

from braces.views import AjaxResponseMixin, JSONResponseMixin, LoginRequiredMixin, SuperuserRequiredMixin

class AjaxPhotoUploadView(
    LoginRequiredMixin,
    SuperuserRequiredMixin,
    JSONResponseMixin,
    AjaxResponseMixin,
    View,
):
    def post_ajax(self, request, *args, **kwargs):
        file = request.FILES['file']
        obj = ??? # I need to get the object somewhere here but I do not know how
        Photo.objects.create(
            title=file.name,
            image=file,
            content_object=obj, 
        )
        response_dict = {
            'message': 'File uploaded successfully!',
        }
        return self.render_json_response(response_dict, status=200)
...