Здесь есть интересная вещь. Я сократил модели, чтобы их было легче понять.
class Participant(Person):
passport_number = models.IntegerField(verbose_name=_('Passport Number'), db_column=u'PassportNumber')
class Meta:
db_table = u'Participant'
class Journey(BaseModel):
participants = models.ManyToManyField(Participant, related_name='%(app_label)s_%(class)s_participants', through=u'ParticipantJourney')
class Meta:
abstract = True
class PlaneJourney(Journey):
flight_number = models.CharField(max_length=16, verbose_name=_('Flight Number'), db_column=u'FlightNumber')
class Meta:
db_table = u'PlaneJourney'
class ParticipantJourney(BaseModel):
participant = models.ForeignKey(Participant, verbose_name=_('Participant'), db_column=u'ParticipantId')
journey_content_type = models.ForeignKey(ContentType, related_name='journey_content_type')
journey_object_id = models.PositiveIntegerField()
journey = generic.GenericForeignKey('journey_content_type', 'journey_object_id') # models.ForeignKey(Journey, verbose_name=_('Journey'), db_column=u'JourneyId')
payment_content_type = models.ForeignKey(ContentType, related_name='payment_content_type')
payment_object_id = models.PositiveIntegerField()
payment = generic.GenericForeignKey('payment_content_type', 'payment_object_id') # models.ForeignKey(Payment, verbose_name=_('Payment'), db_column=u'PaymentId')
class Meta:
db_table = u'ParticipantJourney'
Модель ParticipantJourney связывает участника с путешествием, теперь путешествие абстрактно, потому что ономожет быть сделано любое количество различных способов транспортировки, каждый из которых будет иметь свои собственные соответствующие поля.Я думаю, что эта настройка верна, но я получаю следующее сообщение об ошибке:
Ошибка: одна или несколько моделей не прошли проверку: kandersteg.planejourney: «участники» - это определяемое вручную отношение m2m черезмодель ParticipantJourney, которая не имеет внешних ключей для участников и PlaneJourney
Мне нужно сохранить ручное определение таблицы ссылок, чтобы я также мог связать платеж с указанной поездкой, чтобы я не знал точнокуда идти дальше с этим, если бы кто-нибудь мог пролить свет, я был бы очень благодарен!
Ура, Алекс