首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在创建新模型后自动创建100个模型实例?

问如何在创建新模型后自动创建100个模型实例?
EN

Stack Overflow用户
提问于 2020-01-14 05:46:35
回答 1查看 29关注 0票数 1

我在做电影院预订应用。我已经在前台创建了桌子,包含100个座位(10排x 10个座位)。每个座位都是"td“。我想让每个td成为模型的一个对象,这样我以后就可以很容易地分配用户。基于主模型的max_seats,我想创建对象。在向db添加新电影后,对象应该会自动创建。有什么想法或提示从哪里开始吗?

我的主要模型:

代码语言:javascript
复制
class Movies(models.Model):
    title = models.CharField(max_length=100)
    price = models.FloatField()
    max_seats = models.IntegerField(default=100)

以及需要在其中创建对象的模型:

代码语言:javascript
复制
class Seat(models.Model):
    customer = models.ForeignKey(User, on_delete=models.CASCADE, default=None)
    movie = models.ForeignKey(Movies, on_delete=models.CASCADE)
    row = models.CharField(max_length=1)
    number = models.IntegerField()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-14 06:04:24

您可以使用当前的ForeignKey执行此操作,并在views.py或代码中的任何其他位置创建seats。您也可以使用下面的getSeatsList函数访问座位列表:

你的电影模型:

代码语言:javascript
复制
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())

以及您的座椅型号:

代码语言:javascript
复制
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中或创建新影片时的任何其他位置,您可以创建座位列表并将其分配给您的影片:

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59724626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档