Приветствую! Прощу помощи разобраться с одной задачей. Есть клиент турагенства и у него есть несколько членов семьи:
class Client(models.Model):
name = models.CharField(max_length=50)
surname = models.CharField(max_length=50)
date_of_birth = models.DateField()
city = models.CharField(max_length=100)
created = models.DateTimeField(auto_now=False, auto_now_add=True)
e_mail = models.EmailField()
phone_number = models.PositiveIntegerField()
class Meta:
ordering = ["name"]
def __str__(self):
return self.name
class FamilyMember(models.Model):
client = models.ForeignKey(Client)
name = models.CharField(max_length=50)
surname = models.CharField(max_length=50)
date_of_birth = models.DateField()
def __str__(self):
return self.name
Он может путешествовать сам, а может и с семьей в полном\неполном составе. В турагаенстве при оформлении тура, формируется заказ:
class OrderOfTour(models.Model):
client = models.ForeignKey(Client)
tour = models.ForeignKey(Tour)
beginning_of_tour = models.DateField()
end_of_tour = models.DateField()
persons_with_client = models.PositiveIntegerField(default=0)
total_amount = models.DecimalField(max_digits=6, decimal_places=2, blank=True, default=0)
status = models.CharField(max_length=10, choices=CHOICE_OF_STATUS, default='reserve')
created = models.DateTimeField(auto_now=False, auto_now_add=True)
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
def __str__(self):
return 'Order #%s of %s `s tour ' % (str(self.pk), self.client)
def save(self, *args, **kwargs):
price = self.tour.price_per_night
days = (self.end_of_tour-self.beginning_of_tour).days
self.total_amount = days * price
super(OrderOfTour, self).save(*args, **kwargs)
Вопрос - каким образом в этот заказ подключить членов его семьи, чтобы были видны их данные, в случае, когда он путешествует не сам? Допустим всех членов семьи можно достать через _set(), но как быть, если с клиентом едет, допустим, двое из четырех и как их выбрать при оформлении заказа? Сейчас у меня просто числовое поле с количеством сопровождающих, но хотелось бы получить полные данные.
Надеюсь объяснил понятно :) Заранее благодарен за ответ!
Updated 5 May 2017, 14:00 by oleg_n.