My models:
FormField:
class FormField(models.Model):
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
message="Phone number must be entered in the
format: '+999999999'. Up to 15 digits allowed.")
fieldName = models.CharField(max_length=50)
text = 'text'
email = 'email'
phone = PhoneNumberField()
date = models.DateTimeField
TYPE_OF_FIELD_CHOICE = (
(text, 'text'),
(email, '[email protected]'),
(phone, '+9123456789'),
(date, '2017-01-01')
)
field_type = models.CharField(max_length=25,
choices=TYPE_OF_FIELD_CHOICE,
default=text)
def __str__(self):
return self.fieldName
FormPattern:
class FormPattern(models.Model):
formName = models.CharField(max_length=50)
formFields = models.ManyToManyField(FormField)
def __str__(self):
return self.formName
I am using REST django framework. I need to filter my response data by my
POST request, that look like this:
formpatterns/get_from?f_name1=value1&f_name2=value2
if f_name1 = fieldName in some FormPattern, i need to give response with
this FormPattern formName.
I already have serializator that work with choices and i can GET list all
my FormPattern
class FormSerializer(serializers.ModelSerializer):
formName = serializers.CharField()
formFields = serializers.SlugRelatedField(
many=True,
read_only=True,
slug_field='field_type'
)
class Meta:
model = FormPattern
fields = ('formName', 'formFields')
my method in views.py:
@api_view(['GET', 'POST'])@parser_classes((JSONParser,))def form_list(request):
if request.method == 'GET':
forms = FormPattern.objects.all()
serializer = FormSerializer(forms, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = FormFieldSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(FormPattern.serializer.data)
else:
return Response(
serializer.errors, status=status.HTTP_400_BAD_REQUEST)
POST just saving another FormPattern in my example. How need i edit this to
get what i described upper.
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.