首页 > 解决方案 > 如何将附加数据传递给 post_ajax 方法?

问题描述

我有模型:

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) 字段,用于在更新它们的对象时在其他一些模型的管理员更改视图中创建照片对象。我正在使用 ajax 视图将其独立于管理员更改视图表单进行处理。

要创建 Photo 对象,我需要将其他模型当前更新的对象的数据传递给 post_ajax 方法。

我不知道如何在我想处理照片创建的 post_ajax 方法中识别当前对象模型及其 id。

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)

标签: pythonajaxdjangodjango-viewsdropzone.js

解决方案


推荐阅读