试试这样:
Models.py:
class banner(models.Model):
#id is made by Django
name = models.CharField(max_length=255)
created_by = models.CharField(max_length=255)
company = models.CharField(max_length=255)
register_date = models.DateField(auto_now_add=True)
file = models.FileField(upload_to='files/', null=True, blank=True)
file_name = models.CharField(max_length=255)
PYS:
class BannerForm(forms.ModelForm):
class Meta:
model = banner #Or Banner ??
fields = ('name', 'created_by', 'company', 'file', 'file_name' )
查看:
from myapp.forms import BannerForm
if request.method == "POST":
form = BannerForm(request.POST, request.FILES)
if form.is_valid():
entry = form.save(commit=False)
entry.name = request.POST['name']
entry.created_by = request.POST['created_by']
entry.company = request.POST['company']
entry.file_name = request.POST['file_name']
form.save()
else:
form = BannerForm()
return render(request, "add_banner.html",locals())
如前所述,不要忘记:
<form method="POST" action="" enctype="multipart/form-data">
{% csrf_token %}
{{form.name}}
{{form.created_by}}
{{form.company}}
{{form.file_name}}
{{form.file}}
<input type="submit">
</form>
您不必指定这些内容:
new_banner.file=form.cleaned_data['file']
new_banner.register_date=form.cleaned_data['register_date']
->无用,因为在您的模型中,您设置了auto_now_add=true,所以您不需要在HTML表单中生成字段。
注:如果你的领域
created_by = models.CharField(max_length=255)
是放置现有用户,因此您应该将外键字段设置为:
from django.contrib.auth.models import User
created_by = models.ForeignKey(User, verbose_name="Created by")