我是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'))
你能帮忙吗?
感谢。
答案 0 :(得分: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()