Hi,
May be you can create a new Serializer, including a ListField to get
multiple seat IDs:
class ManyMovieTicketsSerializer(serializers.Serializer):
show = serializers.IntegerField
user = serializers.IntegerField
seats = serializers.ListField(child=serializers.IntegerFields)
def create(self, validated_data):
iterate over seats and save every instance.
On Monday, April 17, 2017 at 1:19:23 AM UTC-4, Aamu Padi wrote:
>
> I am using Django as the backend server and Vue.js for the front end Movie
> app.
>
> I have a Ticket model
>
> class MovieTicket(models.Model):
> show = models.ForeignKey(Show)
> seat = models.ForeignKey(Seat)
> user = models.ForeignKey(User)
> purchased_at = models.DateTimeField(default=timezone.now)
> qrcode = models.ImageField(upload_to='qrcode', blank=True, null=True)
> qrcode_data = models.CharField(max_length=255, unique=True, blank=True)
>
> class Meta:
> unique_together = ('show', 'seat')
>
> And its related Serializer
>
> class MovieTicketSerializer(serializers.ModelSerializer):
> class Meta:
> model = MovieTicket
> fields = '__all__'
>
> To buy a new Ticket there's a view which is mapped to this url
> *http://dev.site.com/api/movies/buy-ticket/
> <http://dev.site.com/api/movies/buy-ticket/>:*
>
> @api_view(['POST'])@permission_classes([IsAuthenticated])def
> buy_ticket(request):
> serialized = MovieTicketSerializer(data=request.data)
> if serialized.is_valid():
> serialized.save()
> return Response(serialized.data, status=status.HTTP_201_CREATED)
> return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
>
> Now from the front end (Vue.js) I can create a new movie ticket like this:
>
> const formBody = {
> show: this.$store.state.showSelected.showTime.id,
> user: this.$store.state.user.id,
>
> // selectedSeats is an array of seats that have been selected by the
> user. Here I am passing the first seat object.
> seat: this.$store.state.selectedSeats[0].seat.id};
> this.$http.post("http://dev.site.com/api/movies/buy-ticket/", formBody)
> .then(function (response) {
> console.log(response.data);
> })
> .catch(function (response) {
> console.log(response);
> });return;
>
> If the form was valid, this will create a new MovieTicket Object.
>
> Now, suppose if the user selected multiple seats, I can loop through each
> selectedSeats array and get the seat ids. But what I am confused is how
> can I pass multiple seat.id if Django rest framework is only accepting
> one seat per request?
>
--
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 https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/b8c28522-cf21-4081-9563-97a869f4fa7f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.