现在我的代码看起来像这样:
#models.py
class Document(models.Model):
docfile = models.FileField(upload_to='documents/%Y/%m/%d')
class Course(models.Model):
course_document = models.ForeignKey(Document,null=True,blank=True)
subject = models.CharField(max_length = 255)
#forms.py
class DocumentForm(forms.Form):
docfile = forms.FileField(
label='Select a file',
help_text='max. 42 megabytes'
)
course = forms.ChoiceField(choices=Course.objects.all(),
widget=forms.RadioSelect)
#views.py
def list(request):
# Handle file upload
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Document(docfile = request.FILES['docfile'])
newdoc.save()
# Redirect to the document list after POST
return HttpResponseRedirect(reverse('notes_app.views.list'))
else:
form = DocumentForm() # A empty, unbound form
# Load documents for the list page
documents = Document.objects.all()
# Render list page with the documents and the form
return render_to_response(
'notes_app/list.html',
{'documents': documents, 'form': form},
context_instance=RequestContext(request)
)
#notes_app/list.html -- The majority of it anyway
<form action="{% url "list" %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<p>{{ form.non_field_errors }}</p>
<p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }}</p>
<p>
{{ form.docfile.errors }}
{{ form.docfile }}
</p>
我使用一个简单的python脚本将“课程”填充到数据库中,并且我想要的是每次用户上传文件时他们选择“课程”并且该课程与他们上传的文件相关联,所以我的问题是如何将这些课程作为一种选择?对不起,如果这个问题看起来很愚蠢,我是编程的新手,甚至更新的python / django。感谢您的反馈。
答案 0 :(得分:1)
我仍然没有真正了解你的问题,但这可能会对你有所帮助。 在你的models.py
中course_name = ('English', 'Maths',)
from model_utils import Choices
class Course(models.Model):
course_document = models.ForeignKey(Document,null=True,blank=True)
name = models.CharField(max_length=255, choices=Choices(*course_name))
subject = models.CharField(max_length = 255)
这将创建一个用于选择课程的下拉菜单。
答案 1 :(得分:0)
choices
应该是CharField
,带有一个选择参数。 choices参数的值为tuple
,其中包含2个项目。第一个是您在需要时可以访问的值。第二个值是用户看到的。因此,“
class MyForm(forms.Form):
courses = forms.CharField(max_length=255, choices=(
('1', 'First Course'),
('2', 'Second Course')
)
)
以下是Django Docs:
https://docs.djangoproject.com/en/dev/ref/models/fields/#choices