Приложения, функциональные возможности и модели Django - PullRequest
0 голосов
/ 12 января 2019

Это довольно интересный вопрос для начинающих, так как я недавно выучил Django, У меня есть эти вопросы, так как я не смог найти четкого ответа ни на один из них.

  1. Предположим, что мы хотим построить систему голосования, и у нас есть пользователи с голосами, у меня путаница с пользователем-администратором, я должен создать приложение под названием пользователи? или я должен использовать таблицу пользователей по умолчанию от Django?
  2. для каждого приложения у меня будет модель, и, конечно, в отношении базы данных, например, у пользователя будет много голосов по многим проектам, поэтому как я могу правильно связать эти отношения между моделями?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 12 января 2019

подкласс AbstractUser.

установить связь между различными моделями приложений

from other_app.models import Model1
    Class Model2(models.Model):
        name = models.CharField(max_length=120)
        relation = models.ForeignKey(Model1, on_delete=models.DO_NOTHING)

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

0 голосов
/ 12 января 2019

Вам не нужно создавать приложение для каждой модели. Приложение, как правило, представляет собой автономную, полезную сущность, которую вы отделяете от других приложений, если думаете, что будете использовать ее в другом проекте в будущем. В вашем случае вы могли бы просто иметь одно приложение с различными моделями (Голосование, Проект).

  1. Используйте стандартную пользовательскую модель Django, если вы не собираетесь расширять ее, но если ваш проект становится больше и появляются новые функции, вы можете по крайней мере создать свою собственную пользовательскую модель с подклассом AbstractUser, потому что потом ее сложно изменить на. Даже если вы просто определите
class User(AbstractUser):
    pass

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

  1. Нет, у вас нет модели для каждого приложения, вы можете иметь несколько моделей для каждого приложения. Для создания отношений вы можете использовать ForeignKey и ManyToManyField. Если модели тесно связаны друг с другом, они принадлежат одному приложению. Вы можете разделить вещи на отдельные приложения для обзора, но будьте осторожны с круговыми ссылками: вы не можете импортировать проект в модели голосования и голосовать в модели проекта.
...