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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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.

Reply via email to