Django .admin - Как отключить поле модели, если другое поле == False - PullRequest
0 голосов
/ 02 февраля 2020

Я новичок в Django. Я занимаюсь разработкой веб-сайта, на котором мне нужно автоматизировать создание новых страниц с помощью Django платформы администратора. Поэтому идея заключается в создании новой вкладки в главном меню сайта, если для параметра display установлено значение True. Однако я хочу дать пользователю возможность создать выпадающее меню, подобное этому, Выпадающее меню . Таким образом, моя идея состоит в том, чтобы установить флажок Dropdown Menu, чтобы каждый раз, когда пользователь устанавливал его True, под ним автоматически включался список всех доступных страниц для «вложения» в раскрывающемся меню. Я прикрепляю страницу администратора, как она есть сегодня, Поля администратора. .


models.py приложения creat_pages

class CreatePage(models.Model):
    name = models.CharField("Nome", max_length=100)
    slug = models.SlugField("Atalho")

    tittle = models.CharField("Título", max_length=100)
    description = models.TextField("Descrição", blank=True)
    body = models.TextField("Corpo", blank=True)
    display = models.BooleanField("Mostrar no Site", default=False)
    dropdown_menu = models.BooleanField("Dropdown Menu", default=False)
    dropdown_options = models.ForeignKey("self", null=True, related_name='dropdown', 
                                  on_delete=models.CASCADE)
    created_at = models.DateTimeField("Criado em", auto_now_add=True)
    updated_at = models.DateTimeField("Última alteração", auto_now=True)

    objects = models.Manager()

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        from django.urls import reverse

        return reverse("create_pages:detail", kwargs={"slug": self.slug})

    class Meta:
        verbose_name = "Criar Página"
        verbose_name_plural = "Criar Paginas"
        ordering = ["-name"]

Admin.py:

class CreatePageAdmin(admin.ModelAdmin):
    list_display = ["name", "slug", "tittle", "display", "created_at"]
    search_fields = ["name", "slug", "tittle"]
    prepopulated_fields = {"slug": ("name",)}

admin.site.register(CreatePage, CreatePageAdmin)

Можете ли вы помочь мне решить эту проблему, пожалуйста?

Большое спасибо!

1 Ответ

0 голосов
/ 10 марта 2020

Мне просто нужно было знать, как использовать Foreingkey. После того, как я узнал, что это было довольно просто. Решил это.

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