【发布时间】:2020-09-06 20:30:22
【问题描述】:
嗨,我有这个模型、表单、视图、设置让我们说
models.py
class ProfileModel(models.Model):
user = Foreignkey(get_user_model()...)
first_name = forms.CharField(....) # some attrs
photo = models.ImageField(uploads_to='uploads/%Y/%m/%d', ...)
forms.py
class ProfileForm(forms.Form):
first_name = forms.CharField()
photo = forms.ImageField()
def handle(self, request, *args, **kwargs):
data = self.cleaned_data
# update the profile model
Profile.objects.filter(user__exact=request.user).update(**data)
views.py
def update_profile(request):
if request.method == 'POST':
form = forms.ProfileForm(request.DATA, request.FILES)
if form.is_valid():
# update here via handle of form
form.handle(request, *args, **kwargs)
else:
#... something
settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
这里的想法只是使用表单来更新模型(不是模型表单)。
通过管理员,upload_to 似乎工作 例如上传图片,url = /media/uploads/..../photo
当它出现在我的表单中时,它只识别 /media/ 而不是upload_to,[顺便说一句,它的工作就是它的行为] 例如上传图片,url = /media/photo
它似乎没有触发upload_to,
我知道模型形式的好处,但在这种情况下,有什么办法吗?
【问题讨论】: