我正在开发Django表单来上传文件。该表格基于模型(文件)。模型(文件)具有外键字段(repo_id)。此repo_id是存储库模型中的主键。
我希望用户能够选择将文件放入哪个repo_id。我需要使用表格中的下拉列表在此字段中插入一个值。
在HTML模板中,下拉列表显示为“存储库对象(repo_id)”
按照教程,我已经在models.py,views.py,forms.py和HTML模板中开发了两个模型(文件和存储库)。该表单正在运行,并且还将数据保存在数据库表中。
我只想更新下拉菜单以仅在存储库模型中显示指标名称,而不是在存储库对象中显示
。这是我的密码。
models.py
from django.db import models
# Create your models here.
class Repository(models.Model):
source = models.TextField(db_column='source', blank=True, null=True) # Field name made lowercase.
indicator = models.TextField(db_column='indicator', blank=True, null=True) # Field name made lowercase.
key_aspect = models.TextField(db_column='key_aspect', blank=True, null=True)
category = models.TextField(db_column = 'category')
table_id = models.TextField(db_column='table_id', blank=True, null=True)
data_returning = models.TextField(db_column='data_returning', blank=True, null=True)
data_source = models.TextField(db_column='data_source', blank=True, null=True)
value = models.TextField(db_column='value', blank=True, null=True) # Field name made lowercase.
year = models.TextField(db_column='year', blank=True, null=True) # Field name made lowercase.
location = models.TextField(db_column='location', blank=True, null=True) # Field name made lowercase.
class files(models.Model):
repo_id = models.ForeignKey(Repository, on_delete = models.CASCADE)
username = models.CharField(db_column='username',max_length = 45)
date = models.DateTimeField(auto_now_add=True, db_column = 'date')
file = models.FileField(upload_to='documents/', db_column = 'file')
username = models.CharField(db_column='username',max_length = 45)
def __unicode__(self):
return self.indicator_name
forms.py
class DocumentForm(forms.ModelForm):
class Meta:
model = files
fields = ('username', 'file', 'repo_id')
views.py
@login_required
def file_upload(request):
websiterepository = Repository
#indicator_queryset = websiterepository.objects.filter(category = 'P').values_list('id','indicator')
if request.method == 'POST':
documentform = DocumentForm(request.POST, request.FILES)
if documentform.is_valid():
documentform.save()
return redirect('file_upload')
else:
form = DocumentForm()
#documentform = DocumentForm(prefix = 'documentform')
#searchform = SearchForm(indicator_queryset = indicator_queryset, prefix = 'searchform')
#form = {'documentform':documentform, 'searchform':searchform}
#return render(request, 'form_file_upload.html', form )
return render(request, 'form_file_upload.html', {'form':form })
我知道这是篇短文。如果您感到自豪,我将不胜感激。
答案 0 :(得分:0)
将模型更改为以下代码
available_on
如果要模型返回字段值,则必须定义一个自函数,否则它将返回各自的对象。