2017-01-11 2 views
3

У меня есть УВЕДОМЛЕНИЕ и USER приложения в Django. Код идет что-то вроде:Любые альтернативы OneToMany или ManyToOne в Django

class Notification(models.Model): 
    user = models.ForeignKey(User , related_name = "notification" 
    .... 
    .... 

и

class User(models.Model): 
    notifications = models.OneToManyField(Notification , related_name = "user" 
    .... 
    .... 

Теперь я знаю, что models.OneToManyField не существует в Django. Я получаю тот факт, что я могу просто получить доступ к пользователю из экземпляра уведомления модели. Но я полагаю, что это как-то замедлит мою систему, потому что в производстве я буду хранить все экземпляры Notification Model. Например: я ожидаю около 500 уведомлений на пользователя, когда система находится в процессе производства в течение значительного времени.

Я полагаю, было бы проще получить доступ ко всем уведомлениям одного пользователя напрямую, а не просеять всю таблицу уведомлений, чтобы найти уведомления конкретного пользователя.
Я читал this и документацию в какой-то степени, и я не могу найти решение моей проблемы.

Также я не уверен в ограничениях обработки процессора для получения всех уведомлений из всей таблицы уведомлений. Я просто предполагаю, что это будет несколько медленнее.

ответ

4

OneToManyField не существует в Django, потому что это просто обратная связь ForeignKey. Поэтому вам не нужно поле notifications на модели User, просто удалите его.

Не волнуйтесь преждевременно об эффективности фильтрации уведомлений. Запрос отношений - это то, для чего был разработан SQL, и это то, что делают реляционные базы данных.

+0

Я полагаю, что доверие фильтрации моей базы данных является самым надежным решением на данный момент. Благодаря тонну! –