Помощь в разработке моделей для приложения «Проект» Django с одним или несколькими URL-адресами (переменная) с одновременным редактированием в интерфейсе администратора - PullRequest
1 голос
/ 06 февраля 2010

Я создаю простое приложение для Django, и у меня возникают некоторые проблемы с дизайном моих моделей и использованием «встроенных» интерфейсов администрирования.

Приложение для управления проектами.
Проект состоит из имени, описания, других полей (например, тегов ...) и нескольких URL (например, URL проекта, URL репозитория исходного кода) , но число не является исправлено, они могут иметь 1, 2 или более URL (я думаю, что 0 никогда не будет иметь место) .

Сначала я создал простые модели, такие как:

class Url(models.Model):
    name = models.CharField(max_length=100)
    url = models.URLField()


class Project(models.Model):
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=300)
      ...
    urls = models.ManyToManyField(Url, blank=True)

но с этими моделями мне не удалось создать интерфейс администратора, где я мог бы создать проект и одновременно добавить один или несколько URL.
Я пытался использовать «inlines» на веб-сайте администратора, как указано в документе, но безуспешно.

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

Может кто-нибудь помочь мне с этой (простой, я думаю) проблемой?
Укажите некоторые полезные рекомендации по выбору модели / дизайн БД?
Даже, может быть, укажите мне пример кода, реализующего такую ​​проблему, с интерфейсом администратора, как указано?

Спасибо за ответы и не стесняйтесь спрашивать подробности, если это не достаточно ясно.

1 Ответ

1 голос
/ 06 февраля 2010

Я думаю, что нашел начало решения моей проблемы.
Измените поле ManyToManyField в Project на ForeignKey в Url и создайте строки, как показано ниже

# models.py
class Project(models.Model):
  name = models.CharField(max_length=100)
  description = models.CharField(max_length=300)
  ...

class Url(models.Model):
  name = models.CharField(max_length=100)
  url = models.URLField()
  project = models.ForeignKey(Project)

# admin.py
class UrlInline(admin.TabularInline):
  model = Url

class ProjectAdmin(admin.ModelAdmin):
  inlines = [ UrlInline, ]

admin.site.register(Project,ProjectAdmin)

Теперь я могу добавлять URL, специфичные для проекта, редактировать их, даже удалять их:)
И я не вижу URL, используемых в других проектах.

Я думаю, что это делает работу, чтобы начать, и, для информации, я нашел идеи на правой боковой панели, глядя на этот другой пост Администратор Django - встроенные строки (или три редактирования модели одновременно) : ) * +1010 *

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