I am trying to create a form that takes input needed for parent child tables. I am unable to create records via post call.
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