我正在研究一個應用程序,它可以讓用戶建立自己的數據庫,並且他們可以創建的字段之一是照片字段。我正在使用表單模型,並且在捕獲其餘數據的同時,它不會嘗試抓取文件。Django文件沒有上傳
我有文件上傳在網站上的其他地方工作,如果我在管理面板上手動上傳文件,它顯示得很好,但表單本身不會抓取文件。
在我的模板,我有:
<form action="/orgs/{{org.id}}/db/{{db.unique_id}}/rows/add/" method="post" enctype="multipart/form-data">
{% csrf_token %}
...
{% elif column.field_type = 23 %}
{{form.photofield}}
{% endif %}
</form>
在我的模型:
from django.db import models
def get_upload_file_name(instance, filename):
return settings.UPLOAD_FILE_PATTERN % (str(time()).replace('.','_'), filename)
class DbField(models.Model):
...
photofield = models.FileField(upload_to=get_upload_file_name, null=True, blank=True)
在我的形式:
from django import forms
from byodb.models import DbField
class DbFieldForm(forms.ModelForm):
class Meta:
model = DbField
fields = ('photofield',)
widgets = {'photofield': forms.FileInput()}
,並在我的觀點:
def org_database_add_row(request, organization_id=1, db_id=1):
if request.POST:
if request.POST.get(str(column.unique_id)):
if column.field_type == 23:
form = DbFieldForm(request.POST, request.FILES)
if form.is_valid():
f = form.save(commit=False)
...
f.save()
對列/行的任何混淆感到抱歉,它只是放置該字段的數據。如果你需要更多的細節,那麼我可以添加更多,但在表面上看起來像所有東西都應該工作...
另外,我一直試圖讓它以另一種方式工作,避免使用表格,以便文件字段將被命名爲與我的列相同。
在這種情況下,在我的模板記載:
<input type="field" name="{{column.unique_id}}" id="photofield" />
,並在我的看法記載:
elif column.field_type == 23:
DbField.objects.create(row=row, column=column, unique_id=column.unique_id, creator=request.user, last_editor=request.user, field_type=column.field_type, photofield=request.FILES[str(column.unique_id)])
但是它同樣的問題,它會創建場就好了,但它不會嘗試抓取文件。我不知道爲什麼它只能在這裏失敗,因爲這在網站上的其他地方都適用。