parameter in POST request not appearing in kwargs

1.2k Views Asked by At

I have a custom manager that creates an object from a POST request. The issue is that the 2 manytomany parameters aren't passing any info.

Here is the method (in a custom manager)

class ConditionManager(models.Manager):
use_in_migrations = True
use_for_related_fields=True

def create_condition(self, *args, **kwargs):
    print(args)
    for i in kwargs:
        print i, kwargs[i]
    condition_obj = conditions.models.Condition(name=kwargs['name'], contagious=kwargs['contagious'], treatable=kwargs['treatable'], treatment=kwargs['treatment'], severeity=kwargs['severeity'], symptoms=kwargs['symptoms'], speciality=kwargs['speciality'])

    condition_obj.save()
    return condition_obj

Here is the serializer

class ConditionSerializer(serializers.ModelSerializer):
  symptoms = SymptomSerializer(read_only=True, many=True)

  def create(self, validated_data):
attrs = validated_data
request = self.context['request']
return Condition.new.create_condition(**attrs)

 class Meta:
model = Condition
fields = ('id', 'treatment', 'name', 'contagious', 'treatable', 'treatment', 'severeity', 'symptoms')

Here is the POST request

POST request

Here is the log

() treatable True name epilepsy treatment 1 contagious False severeity 7 Internal Server Error: /conditions/new/condition/ Traceback (most recent call last): File "/Library/Python/2.7/site-packages/django/core/handlers/exception.py", line 39, in inner response = get_response(request) File "/Library/Python/2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response response = self.process_exception_by_middleware(e, request) File "/Library/Python/2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/Library/Python/2.7/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view return view_func(*args, **kwargs) File "/Library/Python/2.7/site-packages/django/views/generic/base.py", line 68, in view return self.dispatch(request, *args, **kwargs) File "/Library/Python/2.7/site-packages/rest_framework/views.py", line 477, in dispatch response = self.handle_exception(exc) File "/Library/Python/2.7/site-packages/rest_framework/views.py", line 437, in handle_exception self.raise_uncaught_exception(exc) File "/Library/Python/2.7/site-packages/rest_framework/views.py", line 474, in dispatch response = handler(request, *args, **kwargs) File "/Library/Python/2.7/site-packages/rest_framework/decorators.py", line 52, in handler return func(*args, **kwargs) File "/Users/prashantcraju/medicalrecords/conditions/views.py", line 20, in create_condition serializer.save() File "/Library/Python/2.7/site-packages/rest_framework/serializers.py", line 214, in save self.instance = self.create(validated_data) File "/Users/prashantcraju/medicalrecords/conditions/serializers.py", line 21, in create return Condition.new.create_condition(**attrs) File "/Users/prashantcraju/medicalrecords/conditions/managers.py", line 20, in create_condition condition_obj = conditions.models.Condition(name=kwargs['name'], contagious=kwargs['contagious'], treatable=kwargs['treatable'], treatment=kwargs['treatment'], severeity=kwargs['severeity'], symptoms=kwargs['symptoms'], speciality=kwargs['speciality']) KeyError: 'symptoms' [19/Feb/2017 20:51:11] "POST /conditions/new/condition/ HTTP/1.1" 500 14989

As you can see, the 2 manytomany field aren't even showing up in the log.

0

There are 0 best solutions below