BL4CK R4BBIT
30 июля 2019 г. 11:46

Как прикрутить иконки к списку

Network Social

Хочу в профиле пользователя выводить ссылки на соцсети класс соцсетей профиля оформлен следующим кодом в модели

  1. class SocialNetworks(models.Model):
  2. SOCIAL_NETWORKS = (
  3. ('FACEBOOK', 'Facebook'),
  4. ('VK', 'Вконтакте'),
  5. ('TWITTER', 'Твиттер'),
  6. ('INSTAGRAMM', 'Инстаграмм'),
  7. ('PINTEREST', 'Пинтерест'),
  8. ('GITHUB', 'GITHUB'),
  9. )
  10. social_network = models.CharField(max_length=64, choices=SOCIAL_NETWORKS, verbose_name='Социальная сеть')
  11. urls = models.CharField(max_length=64, blank=True, verbose_name='Ссылка')

Вопрос как в шаблон вывести эти ссылки в виде иконок. Понятно что циклом пройти и собрать наличие но как к каждой сети прикрутить соответствующую иконка FontAwesome

2

Вам это нравится? Поделитесь в социальных сетях!

4
Evgenii Legotckoi
  • 30 июля 2019 г. 12:42
  • Ответ был помечен как решение.

Делаете ещё один кортеж с иконками и добаляете метод, по которому будете возвращать иконку в зависимости от типа.

Приерно вот так должно получится в модели, ну а в шаблоне просто вызываете метод get_icon

  1. class SocialNetworks(models.Model):
  2. SOCIAL_NETWORKS = (
  3. ('FACEBOOK', 'Facebook'),
  4. ('VK', 'Вконтакте'),
  5. ('TWITTER', 'Твиттер'),
  6. ('INSTAGRAMM', 'Инстаграмм'),
  7. ('PINTEREST', 'Пинтерест'),
  8. ('GITHUB', 'GITHUB'),
  9. )
  10.  
  11. SOCIAL_NETWORK_ICONS = (
  12. ('FACEBOOK', 'fa fa-facebook'),
  13. ('VK', 'fa fa-vk'),
  14. ('TWITTER', 'fa fa-twitter'),
  15. ('INSTAGRAMM', 'fa fa-instagram'),
  16. ('PINTEREST', 'fa fa-pinterest'),
  17. ('GITHUB', 'fa fa-github'),
  18. )
  19. social_network = models.CharField(max_length=64, choices=SOCIAL_NETWORKS, verbose_name='Социальная сеть')
  20. urls = models.CharField(max_length=64, blank=True, verbose_name='Ссылка')
  21.  
  22. def get_icon(self):
  23. return dict(SOCIAL_NETWORK_ICONS)[self.social_network]
    BL4CK R4BBIT
    • 30 июля 2019 г. 12:45

    Решил по другому
    присвоил константы для значений в списке choise

    1. class SocialNetworks(models.Model):
    2. FACEBOOK = "fab fa-facebook"
    3. VK = "fab fa-vk"
    4. TWITTER = "fab fa-twitter"
    5. INSTAGRAMM = "fab fa-instagram"
    6. PINTEREST = "fab fa-pinterest"
    7. GITHUB = "fab fa-github"
    8. SOCIAL_NETWORKS = (
    9. ('FACEBOOK', 'Facebook'),
    10. ('VK', 'Вконтакте'),
    11. ('TWITTER', 'Твиттер'),
    12. ('INSTAGRAMM', 'Инстаграмм'),
    13. ('PINTEREST', 'Пинтерест'),
    14. ('GITHUB', 'GITHUB'),
    15. )
    16. social_network = models.CharField(max_length=64, choices=SOCIAL_NETWORKS, verbose_name='Социальная сеть')
    17. urls = models.CharField(max_length=64, blank=True, verbose_name='Ссылка')
      BL4CK R4BBIT
      • 30 июля 2019 г. 12:46

      Решение брал отсюда
      http://vladimir-stupin.blogspot.com/2017/07/choices-django.html

        Evgenii Legotckoi
        • 30 июля 2019 г. 12:50

        тоже как вариант, я просто определяю choices одной, максимум двумя буквами всегда, чтобы минимизировать затраты базы данных в таких случаях. Поэтому предподчитаю свой вариант, у меня бы скорее всего это выглядело так.

        1. class SocialNetworks(models.Model):
        2. SOCIAL_NETWORKS = (
        3. ('FACEBOOK', 'f'),
        4. ('VK', 'v'),
        5. ('TWITTER', 't'),
        6. ('INSTAGRAMM', 'i'),
        7. ('PINTEREST', 'p'),
        8. ('GITHUB', 'g'),
        9. )

          Комментарии

          Только авторизованные пользователи могут публиковать комментарии.
          Пожалуйста, авторизуйтесь или зарегистрируйтесь
          • Последние комментарии
          • Evgenii Legotckoi
            16 апреля 2025 г. 17:08
            Благодарю за отзыв. И вам желаю всяческих успехов!
          • IscanderChe
            12 апреля 2025 г. 17:12
            Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
          • AK
            1 апреля 2025 г. 11:41
            Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
          • Evgenii Legotckoi
            9 марта 2025 г. 21:02
            К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
          • VP
            9 марта 2025 г. 16:14
            Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…