I am making a simple DRF Login App which will let the user to upload a CSV file and its description upon registration. It is working fine but when I upload the file, it gives the error The submitted data was not a file. Check the encoding type on the form..
I have searched around the internet but there are questions related to only ImageField (that is image) not FileField. SO I was unable to solve the issue. My *Models.py* is: *class Detail*(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) file = models.FileField(verbose_name="CSV File", upload_to='csv_files') file_desc = models.TextField("CSV File Description") *def __str__*(self): *return *("{} ({} {})".format(self.user.email, self.user.first_name, self.user.last_name)) My *Serializers.py* is: *class MainRegisterSerializer*(serializers.ModelSerializer): *class Meta*: model = User fields = ('username', 'first_name', 'last_name', 'email', 'password') *class RegisterSerializer*(serializers.ModelSerializer): register = MainRegisterSerializer() *class Meta*: model = Detail fields = ['register', 'file', 'file_desc'] optional_fields = ['file', 'file_desc'] extra_kwargs = {'password': {'write_only': True}} *def create*(self, validated_data): user = User.objects.create_user(validated_data['register']['username'], validated_data['register']['email'], validated_data['register']['password']) user.first_name = validated_data['register']['first_name'] user.last_name = validated_data['register']['last_name'] user.save() detail = Detail(user=user, file=validated_data['file'], file_desc=validated_data['file_desc']) detail.save() *return *user My *Views.py* is: *class RegisterAPI*(APIView): renderer_classes = [TemplateHTMLRenderer] template_name = 'accounts/register.html' *def get*(self, request): serializer = RegisterSerializer() *return *Response({'serializer': serializer}) *def post*(self, request): serializer = RegisterSerializer(data=request.data) * if not* serializer.is_valid(): *return* Response({'serializer': serializer}) serializer.save() *return *redirect('register') My *template (register.html)* is: *{% load rest_framework %}* *<html>* * <body>* *<h1>*Register*</h1>* *<form action="#" method="POST">* {% csrf_token %} {% render_form serializer %} *<input type="submit" value="Save">* * </form>* * </body>* *</html> * I have tried a lot but I could not figure out what wrong I am doing. Any help will surely be appreciated. -- You received this message because you are subscribed to the Google Groups "Django REST framework" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-rest-framework+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-rest-framework/d58d9141-3121-4fdc-91ae-d6b659693c91n%40googlegroups.com.