2016-08-10 5 views
1

У меня есть Picture модель, которая содержит разные ссылки на изображения. У меня также есть модели People и Car, которые могут иметь одно или несколько изображений. Это означает, что некоторые изображения могут принадлежать объекту в модели Car или People.Лучший способ избежать родового ForeignKey в django

Я пытаюсь сделать ForeignKey, но одно из полей (car_id или people_id) будет пустым.

Я не могу создать абстрактную модель и сделать ForeignKey из Picture

Последнее решение, которое я знаю, genericForeignKey но это, кажется, комплекс для такой тривиальной задачей.

Есть ли лучший способ решить эту проблему?

+0

Что заставляет вас сказать, что общий внешний ключ является слишком сложным? Это именно то, для чего это необходимо, и его не так сложно настроить, как только вы поймете логику этого. – solarissmoke

+0

@solarissmoke, цитата из «Two scoops of Django»: «Уменьшение скорости запросов из-за отсутствия индексации между моделями. Опасность повреждения данных в виде таблицы может относиться к другой против несуществующей записи». –

ответ

0

Я решил проблему так: я создал другую модель под названием Album, который имеет только id

class People(models.Model): 
    name = models.CharField(max_length=100) 
    album = models.OneToOneField(Album) 

class Car(models.Model): 
    horse_power = models.IntegerField() 
    ablum = models.OneToOneField(Album) 

class Picture(models.Model): 
    title = models.CharField(max_length=100) 
    album = models.ForeignKey(Album) 
Смежные вопросы