2011-05-06 45 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() 
相關問題