Skip to main content

Django Social Links Field

Overview

social-links-field is a Django package that provides a custom model field, form field, and widget for managing social media links with ease. It allows developers to store and manage multiple social media links for a model with built-in validation and a user-friendly interface.

Admin Panel Screenshot

Features

  • Custom JSON-based field for storing social media links
  • Predefined social media platforms
  • Dynamic form widget for adding/removing social links
  • Built-in validation
  • Easy integration with Django forms and admin interface

Installation

Install the package using pip:

pip install django-social-links-field

Quick Start

1. Add to INSTALLED_APPS

In your Django project's settings.py:

INSTALLED_APPS = [
    ...
    'social_links_field',
    ...
]

2. Use in Models

from django.db import models
from social_links_field.models import SocialLinksField

class UserProfile(models.Model):
    name = models.CharField(max_length=100)
    social_links = SocialLinksField()

3. In Django Admin

The field automatically works with Django admin:

from django.contrib import admin
from .models import UserProfile

@admin.register(UserProfile)
class UserProfileAdmin(admin.ModelAdmin):
    # No special configuration needed
    pass

Supported Social Media Platforms

  • Facebook
  • Instagram
  • Twitter
  • LinkedIn
  • GitHub
  • YouTube
  • Custom

Configure the dropdown values from settings.py

SOCIAL_LINKS_FIELD_MEDIA_TYPES = [
    # value, label
    ("facebook", "Facebook"),
    ("instagram", "Instagram"),
    ("twitter", "Twitter"),
    ("linkedin", "LinkedIn"),
    ("github", "GitHub"),
    ("youtube", "YouTube"),
]

Data Structure

Social links are stored as a list of dictionaries:

[
    {
        'type': 'facebook', 
        'link': 'example_user', 
        'label': 'My Facebook Profile'
    }
]

Form Usage

from django import forms
from .models import UserProfile

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ['name', 'social_links']

Customization

Adding Custom Social Media Platforms

You can extend SOCIAL_MEDIA_TYPES in your project:

from social_links_field.models import SOCIAL_MEDIA_TYPES

SOCIAL_MEDIA_TYPES += [
    ('tiktok', 'TikTok'),
    ('telegram', 'Telegram')
]

You can customize html/css/js by directly overriding default widget html template

social_links_field/social_links_widget.html

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License

Release files for django-social-links-field 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-social-links-field 0.1.6
File Size Uploaded
django_social_links_field-0.1.6.tar.gz 68.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-social-links-field 0.1.6
File Interpreter ABI Platform
django_social_links_field-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 138.1 kB

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

3 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

3 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page