Предположим, что существует абстрактная модель CarOwner: тогда как Person или Business может быть CarOwner. Кроме того, автомобиль с определенным VIN может принадлежать (относится) к Лицу или Бизнесу, но не к обоим (взаимоисключающий случай). В самом конце следующего кода я представил две возможности (см. Комментарии в коде «# 1. ДОЛЖЕН Я ИМЕЕТ ЭТО?» И «№ 2. ... ИЛИ ДОЛЖЕН ИМЕТЬ ЭТО?»). В первой возможности отношения «много-к-одному» устанавливаются в абстрактной модели, и я не уверен, что это правильный путь. Во втором случае устанавливаются две связи, и я не уверен, что это правильно, особенно неясно, как сделать их взаимоисключающими. Итак, какой из них прав, и если ни один из них, пожалуйста, не дайте правильного ответа, если сможете. Благодарю.отношение модели Django к нескольким моделям
class CarOwner(models.Model):
location = models.CharField(max_length=50, blank=True)
class Meta:
abstract = True
class Person(CarOwner):
name = models.CharField(max_length=50, blank=True)
class Business(CarOwner):
business_id = models.CharField(max_length=50, blank=True)
class Car(models.Model):
vin = models.CharField(max_length=50, blank=True)
# 1. SHOULD I HAVE THIS??? (CarOwner is abstract)
carowner = models.ForeignKey(CarOwner, blank=True, null=True)
# 2. ...OR SHOULD I HAVE THIS???
person = models.ForeignKey(Person, blank=True, null=True)
business = models.ForeignKey(Business, blank=True, null=True)
Спасибо. Таким образом, использование двух ForeignKeys в одной модели действительно разрешено? Из моих прошлых исследований на сайте Django doc я ранее понимал, что это разрешено только для некоторых случаев отношений «многие ко многим». – jazzblue
Конечно, я не уверен, какая часть документации Django может предложить что-то еще. – zaan