Hello,

I am trying to create a form that takes input needed for parent child 
tables. I am unable to create records via post call.
It is a simple parent child relationship. I want to be able to create the 
parent if it does not exist and create a child right after. I guess I am 
not able to understand this - 
http://www.django-rest-framework.org/api-guide/relations/. Appreciate any 
help.

The Error I see is :

{
    "plumber": [
        "Invalid value."
    ]}


Here is my views:


class PlumberPipelineList(generics.ListCreateAPIView):
    queryset = PlumberPipeline.objects.all()
    serializer_class = PlumberPipelineSerializer
    def form_valid(self, form):
        PlumberPipeline = form.save(commit=False)# dispatch(self, request, 
*args, **kwargs):
        PlumberPipeline.plumber = self.request.plumber
        return super(PlumberPipelineList, self).form_valid(form)


Serializer:

-----------


class CreatableSlugRelatedField(serializers.SlugRelatedField):
    def to_internal_value(self, data):
        try:
            print ("In CreatableSlugRelatedField try" + data)
            return self.get_queryset().get_or_create(**{self.slug_field: data})
        except ObjectDoesNotExist:
            print ("In CreatableSlugRelatedField exception")
            self.fail('does_not_exist', slug_name=self.slug_field, 
value=smart_text(data))
        except (TypeError, ValueError):
            print ("In CreatableSlugRelatedField exception ")
            #return self.get_queryset().get_or_create(**{self.slug_field: data})
            self.fail('invalid')

class PlumberPipelineSerializer(serializers.ModelSerializer):

    plumber = CreatableSlugRelatedField(
        many=True,
        slug_field='plumber',
        queryset=PlumberPipeline.objects.all()
    )

    #plumber = serializers.SlugRelatedField(slug_field='plumber', many=True, 
queryset=Plumber.objects.all())
    class Meta:
        model = PlumberPipeline
        fields = ('id','stage_title','plumber')
        #fields = ('id', 'stage_title', 'plumber','streamProcessor','bus')

class PlumberSerializer(serializers.ModelSerializer):
    #PlumberPipeline = PlumberPipelineSerializer(many=True)
    '''
    plumberPipelines = CreatableSlugRelatedField(
        many=True,
        slug_field='plumber',
        queryset=PlumberPipeline.objects.all()
    )
    '''
    class Meta:
        model = Plumber
        fields = ('id','title')


Model

------


class Plumber(models.Model):
    plumber = models.CharField(max_length=500, blank=True, default='')
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        managed = True
        ordering = ('created','plumber')


class PlumberPipeline(models.Model):
    stage_title = models.CharField(max_length=100, blank=False, default='')
    plumber = models.ForeignKey(Plumber, related_name='plumberPipelines')
    created = models.DateTimeField(auto_now_add=True)
    class Meta:
        managed = True

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/a7561dfc-8f0e-428b-86f4-d7600a280c7a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to