Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django模式下自动生成座位_Python_Django_Database_Sqlite - Fatal编程技术网

Python django模式下自动生成座位

Python django模式下自动生成座位,python,django,database,sqlite,Python,Django,Database,Sqlite,我正在使用Django开发一个公交车预订网站。我在不同的Django应用程序中有两个模型文件。一个模型类是公共汽车,另一个是座椅。总线类中存在容量整数字段。我希望在数据库中创建总线时,自动运行一个循环,并创建与总线类中的容量相等的座位。也许你在看了我的模型文件后会看得更清楚 \src\book\models.py \src\web\models.py 正如您在\models.py一书中所看到的,for循环由于延迟对象的明显原因而失败 另外,我想在web\models.py中创建一个frequen

我正在使用Django开发一个公交车预订网站。我在不同的Django应用程序中有两个模型文件。一个模型类是公共汽车,另一个是座椅。总线类中存在容量整数字段。我希望在数据库中创建总线时,自动运行一个循环,并创建与总线类中的容量相等的座位。也许你在看了我的模型文件后会看得更清楚

\src\book\models.py

\src\web\models.py

正如您在\models.py一书中所看到的,for循环由于延迟对象的明显原因而失败


另外,我想在web\models.py中创建一个frequency类,用于添加总线的频率。如果我创建了一个datetime字段,那么我将不得不为每个不太方便的日期重复每个总线对象。因此,欢迎提出任何建议。如果您需要查看任何其他文件,请告诉我。谢谢。

在我看来,最优雅的解决方案是


另一个解决方案是覆盖总线保存方法。

它起作用了。非常感谢!你能解释一下你做了什么吗?另外,如果我想增加公交车的频率,你有什么建议吗?
from django.db import models
from django.contrib.auth.models import User
from web.models import Bus, Route

class Booking(models.Model):
    class Meta:
        verbose_name_plural = "Booking"
    user = models.ForeignKey(User)
    #session = models.ForeignKey(sessions.Sessions)
    name = models.CharField(max_length=50)
    gender = models.CharField(max_length=10, choices=(('Mr', 'mr'), ('Mrs', 'mrs'), ('Ms', 'ms'),))
    age = models.IntegerField()
    email = models.EmailField()
    phone = models.IntegerField()
    bus = models.ForeignKey(Bus, default='')

    def __str__(self):
        return self.name

class Seat(models.Model):
    class Meta:
        verbose_name_plural = "Seat"
    for seats in range(1,int(float(Bus.capacity)+1.0)):   
        id = models.AutoField(primary_key=True)
        bus = models.ForeignKey(Bus)

    def __str__(self):
        return str(self.id)



class Ticket(models.Model):
    class Meta:
        verbose_name_plural = "Ticket"
    seat = models.ForeignKey(Seat)
    bus = models.ForeignKey(Bus)
    route = models.ForeignKey(Route, default='')

    def __str__(self):
        return str(self.id)
from django.db import models
from django.core.exceptions import ValidationError


class Route(models.Model):
    class Meta:
        verbose_name_plural = "Routes"

    BUSFROM = (
    ('Delhi', 'Delhi'),
    ('Jaipur', 'Jaipur'),
    ('Ajmer', 'Ajmer'),
    )

    BUSTO = (
    ('Ajmer', 'Ajmer'),
    ('Chandigarh', 'Chandigarh'),
    ('Delhi', 'Delhi'),
    )

    route_id = models.AutoField(primary_key=True,)    
    location_from = models.CharField(max_length=255, choices=BUSFROM)
    location_to = models.CharField(max_length=255,choices=BUSTO)    
    route_name = models.CharField(max_length=500, default='', editable=False)


    def __str__(self):
        if self.location_from == self.location_to:
            raise ValidationError('To and From Can\'t be the same')
        self.route_name = '{0}-{1}'.format(str(self.location_from), str(self.location_to))
        return self.route_name


class Bus(models.Model):

    BUSTYPE = (
    ('Volvo', 'Volvo'),
    ('Ordinary', 'Ordinary'),
    )
    class Meta:
        verbose_name_plural = "Bus"
    type_of_bus = models.CharField(max_length=255, choices=BUSTYPE)
    bus_registration = models.CharField(max_length=255, default='')
    capacity = models.IntegerField(default=0)
    bus_number = models.IntegerField()
    route = models.ForeignKey(Route,)


    def __str__(self):
        return '{0}, {1}, {2}'.format(str(self.bus_number), self.type_of_bus, self.route)
from django.db.models.signals import post_save
from django.dispatch import receiver

class Bus(models.Model):
    # ... fields here

class Seat(models.Model):
    id = models.AutoField(primary_key=True)
    bus = models.ForeignKey(Bus)
    # ... 

# function to create seats
@receiver(post_save, sender=Bus)
def create_seats(sender, instance, created, **kwargs):
    if created:
        for seat in range (0, instance.capacity):
            instance.seat_set.create( )