2016-12-17 3 views
0

Я делаю сайт с Django 1.10 (Python 3). Цель состоит в том, чтобы отслеживать, какую книгу у меня есть и какие из них я прочитал.Предложения по разложению приложения?

Я хочу сделать простые страницы CRUD для нескольких разных моделей. В настоящее время различными моделями я являюсь: книги, авторы и издатели. Этот список, вероятно, будет расти. Я читал о разделении вашего сайта на более мелкие приложения. Итак, одно приложение для книг CRUD-страниц, одно для авторов и одно для издателей.

Является ли это способом, которым занимается Django? Если это так, то возникает вопрос. Как мы разделяем модели? Модель «Книги» имеет поля, которые зависят от автора и издателя. Но поскольку они сейчас находятся в своем собственном приложении, как я могу получить к нему доступ? Мне не нравится идея просто импортировать из другого приложения, поскольку они должны быть отдельными приложениями.

+0

Ваше последнее предложение не следует вообще. Это нормально для создания отношений между приложениями; действительно, вам нужно, например, подключить модель к пользователю. –

ответ

0

Если они связаны, не отделяйте их. Вместо этого вы можете пересмотреть структуру своих моделей и снова создать их.

Я не знаю, какие именно поля относятся к Author и Publisher, но вы may объедините их в одну модель. Это всего лишь идея.

Или вы можете просто создавать таблицы, как Author, Publisher и т.д.

Существует процесс назван Normalization который выступает, в основном, создание таблиц с небольшим количеством столбцов вместо создания большой.

Дополнительно вы также можете посмотреть this thread.

0

Я хочу сделать простые страницы CRUD для нескольких разных моделей. разные модели, которые у меня есть на данный момент: Книги, авторы и Издатели. Этот список, вероятно, будет расти. Я прочитал о разделении вашего сайта на более мелкие приложения. Итак, одно приложение для книг CRUD-страниц, одно для для авторов и одно для издателей.

Лично я думаю, что одно приложение может легко обрабатывать три модели.

Является ли это способом, которым занимается Django? Если это так, то возникает вопрос. Как нам отделить модели? Модель «Книги» имеет поля, которые зависят от автора и издателя. Но так как теперь они находятся в своем собственном приложении, как я должен получить доступ к нему ? Мне не нравится идея просто импортировать из еще одно приложение, поскольку они должны быть отдельными приложениями.

Чтобы получить доступ к полям, необходимо реализовать отношения внешнего ключа. Проверьте документы here.

Если вы все еще думаете, что модели должны жить в разных приложениях, вам необходимо будет импортировать их перед их использованием. Скажем, для модели книги требуется модель автора. Что вам нужно сделать, это импортировать модель Автор и связать его с книгой модели с ManytoMany или ForeignKey отношений .:

from django.db import models 
from app_authors.model import Author 


class Book()models.Model: 
    author = ForeignKey(Author, null=True, blank = True, verbose_name = 'Author') 
Смежные вопросы