【发布时间】:2017-11-25 14:25:26
【问题描述】:
我正在使用 Django 的扩展用户配置文件,而不是有很多图像字段,我想在我的模型中创建一个新的图像类,我可以上传许多自动分配给正确用户的图像。然后用户可以查看和编辑他们所有的图像。我基本上停留在最后一部分(查看和编辑)。
我的应用叫做 ve
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500, blank=True)
... etc
class Images(models.Model):
image = models.ImageField(upload_to='profile_image', null=True, default='profile_image/none/no-img.png')
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
forms.py
class ImagesForm(forms.ModelForm):
image = forms.ImageField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
class Meta:
model = Images
fields = (
'image',
)
1.编辑图片
此设置上传图片(在管理员中)但不分配用户。另一个问题是我只能上传/编辑 1 张图片。
views.py
@login_required
@transaction.atomic
def edit_images(request):
if request.method == 'POST':
images_form = ImagesForm(request.POST, request.FILES)
if images_form.is_valid():
images_form.save()
return redirect('ve:index_account')
else:
pass
else:
images_form = ImagesForm(request.POST, request.FILES)
return render(request, 've/cp/edit_images_account.html', {
'images_form': images_form,
})
edit_images_account.html
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ images_form.as_p }}
<button type="submit">Upload</button>
</form>
2。查看图片
views.py
@login_required
def index_account(request):
args = {'user': request.user}
return render(request, 've/cp/index_account.html', args)
index_account.html
<p><a href="{% url 've:edit_images' %}">Edit your images</a></p>
{% if user.images.images %}
{% for img in user.images %}
<img src="{{ user.images.image.url }}"><br>
{% endfor %}
{% else %}
<p>No images</p>
{% endif %}
【问题讨论】:
-
要一张一张上传图片,一张一张编辑图片吗?还是想一次上传多张图片?
-
理想情况下是多个,例如编辑所有图像页面
标签: python django image foreign-keys