Python 如何将图像保存到其关联实例?

Python 如何将图像保存到其关联实例?,python,django,django-views,Python,Django,Django Views,如何将上载的图像填充到其关联实例?我试过了,但我犯了错误。我所做的是 型号.py class Rental(models.Model): ownerName = models.CharField(_("Owner's Name"),max_length=255, blank=True,null=True) listingName = models.CharField(_("Lisitng Name"), max_length=255, blank=False,null=True

如何将上载的图像填充到其关联实例?我试过了,但我犯了错误。我所做的是

型号.py

class Rental(models.Model):
    ownerName = models.CharField(_("Owner's Name"),max_length=255, blank=True,null=True)
    listingName =  models.CharField(_("Lisitng Name"), max_length=255, blank=False,null=True)
    slug = models.SlugField(unique=True,blank=False,null=True)
    summary = models.TextField(max_length=500, blank=True,null=True)
    room = models.PositiveIntegerField(_("No of Rooms"), blank=False, null=True)


class GalleryImage(models.Model):
    rental = models.ForeignKey('Rental',on_delete=models.CASCADE,blank=True,null=True,
                                verbose_name=_('Rental'), related_name="gallery")
    image = models.ImageField(blank=True,upload_to='upload/',null=True)


def pre_save_post_receiver(sender,instance,*args,**kwargs):
    slug = slugify(instance.listingName)
    exists = Rental.objects.filter(slug=slug).exists()
    if exists:
        slug = "%s-%s"%(slug,instance.id)
    instance.slug = slug

pre_save.connect(pre_save_post_receiver,sender=Rental)
urlpatterns = [
    url(r'^$', LandingView.as_view(), name="landing_page"),
    url(r'^add/$', AddView.as_view(), name="add"),
    url(r'^roomlist/$', RoomList.as_view(), name="roomlist"),
    url(r'^rent/(?P<slug>\w+)/$', rent_detail, name="rent_detail"),
    url(r'^add/space/$', AddSpaceView.as_view(), name="addSpace"),
    url(r'^lang/$', Language.as_view(), name="lang"),
    url(r'^upload/image/$', UploadImage.as_view(), name="uploadImage"),
    url(r'^filter/space/$', FilterSpace.as_view(), name="filterSpace"),
    url(r'^api/', include(v1_api.urls)),
]
视图

class UploadImage(View):
model = Rental
def post(self,request,*args,**kwargs):
    print(request)
    f =request.FILES.getlist('image')
    print ('f',f)
    if request.FILES:
        # files = [request.FILES.getlist('image[%d]'%i) for i in range(0,len(request.FILES))]
        rental_id = request.POST.get('rental_id')
        rental = Rental.objects.get(id=rental_id)
        for file in request.FILES.getlist('image'):
            print('file',file)
            image = GalleryImage.objects.create(image=file,rental=rental)
            print('image',image)
            image.save()
    return HttpResponseRedirect('/')
url.py

class Rental(models.Model):
    ownerName = models.CharField(_("Owner's Name"),max_length=255, blank=True,null=True)
    listingName =  models.CharField(_("Lisitng Name"), max_length=255, blank=False,null=True)
    slug = models.SlugField(unique=True,blank=False,null=True)
    summary = models.TextField(max_length=500, blank=True,null=True)
    room = models.PositiveIntegerField(_("No of Rooms"), blank=False, null=True)


class GalleryImage(models.Model):
    rental = models.ForeignKey('Rental',on_delete=models.CASCADE,blank=True,null=True,
                                verbose_name=_('Rental'), related_name="gallery")
    image = models.ImageField(blank=True,upload_to='upload/',null=True)


def pre_save_post_receiver(sender,instance,*args,**kwargs):
    slug = slugify(instance.listingName)
    exists = Rental.objects.filter(slug=slug).exists()
    if exists:
        slug = "%s-%s"%(slug,instance.id)
    instance.slug = slug

pre_save.connect(pre_save_post_receiver,sender=Rental)
urlpatterns = [
    url(r'^$', LandingView.as_view(), name="landing_page"),
    url(r'^add/$', AddView.as_view(), name="add"),
    url(r'^roomlist/$', RoomList.as_view(), name="roomlist"),
    url(r'^rent/(?P<slug>\w+)/$', rent_detail, name="rent_detail"),
    url(r'^add/space/$', AddSpaceView.as_view(), name="addSpace"),
    url(r'^lang/$', Language.as_view(), name="lang"),
    url(r'^upload/image/$', UploadImage.as_view(), name="uploadImage"),
    url(r'^filter/space/$', FilterSpace.as_view(), name="filterSpace"),
    url(r'^api/', include(v1_api.urls)),
]

错误消息会告诉您问题所在

NameError: name 'rental_id' is not defined
您正试图使用
rental\u id
筛选
rental
对象,但尚未定义变量。 您的post请求中可能有
租赁id
。如果是,请尝试添加以下内容:

rental_id = request.POST.get('rental_id')  

您可以附加回溯吗?i get rental=rental.objects.get(id=rental\u id)name错误:名称“rental\u id”未与django.db.utils.IntegrityError一起定义:唯一约束失败:rentals\u rental.Slug您是否也可以发布
URL.py
?我已使用URL.py更新。我需要用reactjs和ajax代码更新上传图像吗?我在添加租赁id“rentals.models.DoesNotExist:租赁匹配查询不存在”时遇到此错误。是否发布
租赁id
?请添加您的formOK的代码。您不会将有关租赁对象的任何信息发布到视图中。您需要将
rental\u id
添加到ajax帖子中,或者修改
url
使其包含
rental\u id
。如果我将rental\u id添加到ajax帖子中,那么我也需要将其添加到url中,对吗?不,其中一个选项就足够了。