Структура модели Django - лучшая практика - PullRequest
1 голос
/ 16 февраля 2011

Для небольшого бесплатного фруктового сайта у меня есть следующие модельные отношения:

3 класса - Яблоки, Клубника и Места

Яблоки и Клубника перечисляют все "свойства" фруктов:

class Apple(models.Model):     
    treeSize = ...
    age = ...

class Strawberry(models.Model):
    fieldArea = ...

Теперь я хочу записать все места с фруктами.До сих пор у меня есть класс с местоположениями и атрибутами для яблок и клубники, который позволяет использовать ForeignKeys для фруктов.Но этого не может быть. Это выглядит очень неэффективно, особенноесли я добавлю несколько других типов фруктов. Кроме того, мне нужно проверить, чтобы в каждом месте был хотя бы один из ключей фруктов.

class Location(models.Model):    
     lat = ...
     lng = ... 
     appleType = models.ForeignKey(Apple, null = True)
     strawberryType = models.ForeignKey(Strawberry, null = True)

Существует ли лучший способ разработкиотношения или структура модели? Что было бы лучшим решением для этой проблемы?

Спасибо за ваш совет!

1 Ответ

2 голосов
/ 16 февраля 2011

Это идеальный случай, когда вам нужно использовать Родовые отношения .

Вместо сохранения внешнего ключа для каждого из них, вы сохраняете идентификатор типа контента (который распознаетКлубника из яблок) и идентификаторы объектов.Конечно, вы можете разработать это с вашими собственными соглашениями, используя соответствующие строки в модели Location, но вся эта тяжелая работа выполняется для вас во встроенной в jjango Content Type Framework .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...