我是Django初学者,如何获取通过表单上传的每个图像的ID?
class Image(models.Model):
imageuploader_profile=models.ForeignKey(settings.AUTH_USER_MODEL)
upload_image=models.ImageField()
def upload(request):
if request.method == 'POST':
form=UploadForm(request.POST, request.FILES)
if form.is_valid():
post=form.save(commit=False)
post.imageuploader_profile=request.user
post.save()
return redirect....
else:
form=UploadForm
return render......
view.py
def home(request) :
all_images=Image objects.filter(imageuploader_profile=request.user)
context={'all_images':all_images}
return render(request, 'home.html', context)
我的home.html
{% for post in all_images %}
{% if post upload_images %}
<img src="{{ post upload_image.url }}">
{% endif %}
{% endfor%}
我想在模板中获取所有ID。
答案 0 :(得分:1)
您可以编写新的方法/视图以获取所有ID:
def get_images_ids():
images_ids = Image.objects.values_list('id)
print(images_ids)
return images_ids
Here the explanation代表values_list
(如果您需要更多,也可以使用values()
或属性flat=True
。
如果调用get_images_ids()
,则会获得查询集中(或带有flat=True
的列表)中所有图像的所有ID。如果您需要过滤它们,请使用.filter()
。
在您的views.py
def home(request) :
all_images=Image objects.filter(imageuploader_profile=request.user)
context={'all_images':all_images, all_images_ids: get_images_ids()}
return render(request, 'home.html', context)
在您的模板中执行以下操作:
{% for post in all_images %}
{% if post upload_images %}
<img src="{{ post.upload_image.url }}">
<span>{{ post.id }}</span>
{% endif %}
{% endfor%}
或
<ul>
{% for id in all_images_ids %}
<li>{{ id }}</li>
{% endfor%}
</ul>
答案 1 :(得分:1)
除非首先在数据库中创建一个对象,否则您将无法获得图像的ID,换句话说,您将必须首先执行post.save()
,然后可以运行post.id
来获得ID。这是您的代码示例。
class Image(models.Model):
imageuploader_profile=models.ForeignKey(settings.AUTH_USER_MODEL)
upload_image=models.ImageField()
def upload(request):
if request.method == 'POST':
form=UploadForm(request.POST, request.FILES)
if form.is_valid():
post=form.save(commit=False)
post.imageuploader_profile=request.user
post.save()
print(post.id) # This will print id of submitted post in your console
return redirect....
else:
form=UploadForm
注意:运行post.save()
答案 2 :(得分:0)
执行post.save()
后,您可以获取图像的ID。
因此,在return语句之前,您可以访问post.id
或post.pk
以获取图像ID。
更新:
class Image(models.Model):
imageuploader_profile=models.ForeignKey(settings.AUTH_USER_MODEL)
upload_image=models.ImageField()
def upload(request):
if request.method == 'POST':
form=UploadForm(request.POST, request.FILES)
if form.is_valid():
post=form.save(commit=False)
post.imageuploader_profile=request.user
post.save()
# here you can access post.id or post.pk
return redirect....
else:
form=UploadForm
如果要获取所有上载的图像ID,请使用Image.objects.values_list('id)