Python 如何将图像保存到其关联实例?
如何将上载的图像填充到其关联实例?我试过了,但我犯了错误。我所做的是 型号.pyPython 如何将图像保存到其关联实例?,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
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中,对吗?不,其中一个选项就足够了。