Вы можете сделать это с вашим текущим ForeignKey
и создать места в views.py
или в любом другом месте вашего кода. Вы также можете получить доступ к списку мест с помощью функции getSeatsList
ниже:
Ваша модель ie:
class Movies(models.Model):
title = models.CharField(max_length=100)
price = models.FloatField()
max_seats = models.IntegerField(default=100)
def __init__(self, *args, **kwargs):
super(Movies, self).__init__(*args, **kwargs)
# Change Movies field if necessary here
for i in range(self.max_seats):
new_seat = Seat()
new_seat.customer = None
new_seat.movie = self
new_seat.row = i%10 + 1
new_seat.number = i + 1
new_seat.save()
def getSeatsList(self):
return list(self.movie_seats.all())
И ваша модель сиденья:
class Seat(models.Model):
customer = models.ForeignKey(User, on_delete=models.CASCADE, default=None, null=True, blank=True)
# Adding a Foreign Key with a related name
movie = models.ForeignKey(Movies, on_delete=models.CASCADE, related_name='movie_seats', null=True, blank=True)
row = models.CharField(max_length=1)
number = models.IntegerField()
Или же, в вашем views.py
или в любом другом месте, когда вы создаете новый Mov ie, вы можете создать список мест и назначить их вашему mov ie:
new_movie = Movies()
new_movie.title = "New Title"
new_movie.price = 20
new_movie.max_seats = 100
new_movie.save()
for i in range(new_movie.max_seats):
new_seat = Seat()
new_seat.customer = None
new_seat.movie = new_movie
new_seat.row = i%10 + 1
new_seat.number = i + 1
new_seat.save()