2012-04-10 2 views
1

Я создаю простой проект в Django для дальнейшего моего знания о нем и Python, по существу, только собирается хранить закладки и теги, оба имеют вид, и будет 3 модели:
Tag
Закладка
Bookmark_Tag (отношения)Django Project/Apps Layout - Правильный способ?

Я прочитал панель «Проекты и приложения» в документации django, но я до сих пор не знаю, как ее выложить, прямо сейчас все в одном приложении для заметок, должно быть отдельное приложение для Закладок и отдельного приложения для Тэгов, и если да, то где работает модель отношений?

Спасибо!

ответ

5

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

См. Django project models.py versus app models.py и Django: "projects" vs "apps" на этом сайте, а также Django tips: laying out an application для получения некоторых рекомендаций.

Если Bookmark s и Tag s имеют много-ко-многим, и вам необходимо добавить дополнительные поля в этой связи (другой, чем просто id с этих объектов, связанных с), вы можете использовать ManyToManyField и установить through таблица:

class Bookmark(models.Model): 
    # whatever fields you need on Bookmark 
    tags = models.ManyToManyField('Tag', through = 'BookmarkTag') 

class Tag(models.Model): 
    # whatever fields you need on Tag 
    pass 

class BookmarkTag(models.Model): 
    bookmark = models.ForeignKey(Bookmark) 
    tag = models.ForeignKey(Tag) 
    # whatever additional fields you need on the relationship 

Смотрите документацию Django на Extra fields on many-to-many relationships для получения дополнительной информации.