2011-05-06 28 views
3

我对django很新颖。我正在尝试为我的业务实施小型应用程序,这是一个由人造草坪制成的足球场的租赁服务。服务基于该领域的小时租赁。人们可以每小时租用一次该领域,或者他们可以选择会员选项,其中包括特定的一天和一个小时内的特定时间段。我的模型中有两节课。如何编写表格的自定义保存方法以将数据添加到其他表格?

一个是一次性预订。人们可以在一周内的任何一天和一小时内预定足球场。这很简单。

class Reservation(models.Model): 
    name = models.ForeignKey(User) 
    membership = models.ForeignKey((Member), blank=True, null=True, editable=False) 
    date = models.DateField() 
    field_name = models.ForeignKey(Field) 
    fee = models.DecimalField(decimal_places=0, max_digits=3) 
    is_member = models.BooleanField(default=False, editable=False) 
    is_active = models.BooleanField(default=True) 

    def __unicode__(self): 
     return u'%s %s %s %s' % (self.date, self.user.first_name,self.user.last_name, self.field) 

    class Meta: 
     unique_together = (("date", "field")) 

另一个会员。人们可以申请成为会员。当有人申请会员船时,我想自动在开始日期和结束日期之间为该日期和小时创建预订,因此在该日期和小时不会有任何一次性预订。我需要编写一个自定义的保存方法,但我找不到如何在保存会员表时添加信息到预定表。我想添加成员名称并将is_member字段设置为true以便查看它是成员保留。

class Member(models.Model): 
    DAY_CHOICES = (
     (1, 'PAZARTESI'), 
     (2, 'SALI'), 
     (3, 'CARSAMBA'), 
     (4, 'PERSEMBE'), 
     (5, 'CUMA'), 
     (6 ,'CUMARTESI'), 
     (7, 'PAZAR'), 
    ) 
    name = models.ForeignKey(User) 
    starting_date = models.DateField() 
    end_date = models.DateField() 
    day = models.IntegerField(max_length=1, choices=GUN_CHOICES) 
    field = models.ForeignKey(Field) 
    fee = models.DecimalField(decimal_places=0, max_digits=3) 

    def __unicode__(self): 
     return u'%s %s, %s, %s' % (self.name.first_name, self.name.last_name, self.day, self.field) 

    class Meta: 
     unique_together = (('date', 'field')) 

您能否帮忙?

谢谢。

回答

1

而不是重写保存方法,您可以使用post_save信号。

基本用法解释如下:http://www.djangofoo.com/85/signal-connect-disconnect-django-signals

因此,每次保存成员后,您都可以调用创建适当保留的函数。

调整的例子...

def create_reservation(sender, **kwargs): 
    # the object which is saved can be accessed via kwargs 'instance' key. 
    member = kwargs['instance'] 
    print 'the object is now saved.' 
    # ...create reservation... 
    reservation = Reservation() 
    reservation.is_member = True 
    reservation.membership = member 
    .... 
    reservation.save() 
相关问题