I'm using CBVs and trying to upload a file with a FileField. It seems to work in admin but not in my template. It doesnt give any errors when creating the record and it saves the rest of the data in the form, but it doesnt save the attachment
Heres my model class LaserMaskDesign(models.Model): laser_mask_design_ui = models.CharField(max_length=60, unique=True) # Wafer Design UI mask_layers = models.CharField(max_length=255, default='', blank=True, null=True) design_date = models.DateTimeField(blank=True, null=True) designer = models.CharField(max_length=255, default='', blank=True, null=True) pcm = models.CharField(max_length=255, default='', blank=True, null=True) critical_dimensions = models.DecimalField(max_digits=20, decimal_places=4, default=0.0000, blank=True, null=True) dimensions = models.CharField(max_length=255, default='') thickness = models.DecimalField(max_digits=20, decimal_places=4, default=0.0000, blank=True, null=True) material = models.CharField(max_length=255, default='', blank=True, null=True) number_of_products = models.IntegerField(default=0, blank=True, null=True) chip_list = models.CharField(max_length=255, default='', blank=True, null=True) design_document = models.FileField(blank=True, null=True) notes = models.TextField(blank=True, null=True, default='') created_at = models.DateTimeField(auto_now_add=True) created_by = models.ForeignKey(settings.AUTH_USER_MODEL) in_trash = models.BooleanField(default=False) inactive_date = models.DateTimeField(blank=True, null=True) class Meta: ordering = ['laser_mask_design_ui', ] def __str__(self): return self.laser_mask_design_ui def get_absolute_url(self): return reverse("engineering:laser_mask_design_detail", kwargs={"pk": self.pk}) and my view class GaasWaferDesignCreateView(LoginRequiredMixin, CreateView,): fields = ("design_ui", "emitting", "contact_location", "optical_power", "design_date", "designer", "design_document", "designer_ui", "in_trash", "inactive_date", "notes") model = GaasWaferDesign template_name = 'engineering/gaas_wafer_designs/gaas_wafer_design_form.html' def form_valid(self, form): object = form.save(commit=False) object.created_by = self.request.user object.save() return super(GaasWaferDesignCreateView, self).form_valid(form) and my template {% extends "pages/layout.html" %} {% load static from staticfiles %} {% load widget_tweaks %} {% block title %}{% if not form.instance.pk %}Add GaAs Wafer Design{% else %}Edit GaAs Wafer Design - {{ gaaswaferdesign.design_ui }}{{ form.instance.gaas_wafer_design.design_ui }}{% endif %}{% endblock %} {% load django_bootstrap_breadcrumbs %} {% block breadcrumb %} {% block breadcrumbs %} {{ block.super }} {% endblock %} {% endblock %} {% block content %} <div class="row"> <div class="col"> <h1 class="page_title">{% if not form.instance.pk %}Add GaAs Wafer Design{% else %}Edit GaAs Wafer Design{% endif %}</h1> </div> </div> <div class="row"> <div class="col-md-6"> <div class="card"> <form method='POST'> {% csrf_token %} <div class="card-header"> <strong>GaAs Wafer Design</strong> <small>Form</small> </div> <div class="card-body"> <p><strong>Bold are required *</strong></p> {{ form.non_field_errors }} <div class="row"> <div class="form-group col-sm-12"> <div class="form-group"> <label for="{{ form.design_ui.id_for_label }}"><b>GaAs Wafer Design UI</b></label> {% render_field form.design_ui class+="form-control" %} {{ form.design_ui.errors }} </div> </div> </div> <!--/.row--> <div class="row"> <div class="form-group col-sm-4"> <div class="form-group"> <label for="{{ form.emitting.id_for_label }}"><b>Emitter Type</b></label> {% render_field form.emitting class+="form-control" %} {{ form.emitting.errors }} </div> </div> <div class="form-group col-sm-4"> <div class="form-group"> <label for="{{ form.contact_location.id_for_label }}"><b>Contact Location</b></label> {% render_field form.contact_location class+="form-control" %} {{ form.contact_location.errors }} </div> </div> <div class="form-group col-sm-4"> <div class="form-group"> <label for="{{ form.optical_power.id_for_label }}"><b>Optical Power</b></label> {% render_field form.optical_power class+="form-control" %} {{ form.optical_power.errors }} </div> </div> </div> <!--/.row--> <div class="row"> <div class="form-group col-sm-6"> <div class="form-group"> <label for="{{ form.design_date.id_for_label }}"><b>Design Date</b></label> {% render_field form.design_date class+="form-control" %} {{ form.design_date.errors }} </div> </div> <div class="form-group col-sm-6"> <div class="form-group"> <label for="{{ form.designer.id_for_label }}"><b>Designer</b></label> {% render_field form.designer class+="form-control" %} {{ form.owner.errors }} </div> </div> </div> <!--/.row--> <div class="row"> <div class="form-group col-sm-6"> <div class="form-group"> <label for="{{ form.designer_ui.id_for_label }}">Designer UI</label> {% render_field form.designer_ui class+="form-control" %} {{ form.designer_ui.errors }} </div> </div> <div class="form-group col-sm-6"> <div class="form-group"> <label for="{{ form.design_document.id_for_label }}">Design Document</label> {% render_field form.design_document class+="form-control" %} {{ form.design_document.errors }} </div> </div> </div> <!--/.row--> <div class="row"> <div class="form-group col-sm-6 text-left"> <div class="form-group" style="float:left;"> <label for="{{ form.in_trash.id_for_label }}">In Trash?</label> {% render_field form.in_trash class+="form-control" %} {{ form.in_trash.errors }} </div> </div> <div class="form-group col-sm-6"> <div class="form-group"> <label for="{{ form.inactive_date.id_for_label }}">Date Trashed</label> {% render_field form.inactive_date class+="form-control" %} {{ form.inactive_date.errors }} </div> </div> </div> <!--/.row--> <div class="row"> <div class="form-group col-sm-12"> <div class="form-group"> <label for="{{ form.comments.id_for_label }}">Notes</label> {% render_field form.notes class+="form-control" %} {{ form.notes.errors }} </div> </div> </div> <!--/.row--> </div> <div class="card-footer"> <input type="submit" class="btn btn-primary" value="Save"> </div> </form> </div> </div> </div> {% endblock %} Thanks! -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/981c16a8-29e6-46e1-b539-7511c50b8849%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.