فیلدهای عمومی و کمکی (Generic & Helper Fields)


این فیلدها معمولاً برای مدیریت زیرساخت مدل یا ذخیره اطلاعات سیستمی استفاده می‌شوند. بعضی از آن‌ها به‌صورت خودکار توسط جنگو ایجاد می‌شوند (مثل id) و بعضی برای موارد خاص طراحی شده‌اند.

الف) AutoField / BigAutoField

  • فیلد عددی که به‌صورت خودکار افزایش می‌یابد.
  • معمولاً به عنوان id پیش‌فرض در هر مدل استفاده می‌شود.

ب) UUIDField

  • ذخیره شناسه‌های منحصربه‌فرد جهانی.
  • مناسب برای مواردی که نمی‌خواهید id عددی قابل حدس باشد.
  • حتما باید کتابخانه uuid با دستور import uuid وارد گردد

 

ج) GenericIPAddressField

  • ذخیره آدرس IP (هم IPv4 و هم IPv6).

 

د) BinaryField

  • ذخیره داده‌های باینری خام — مثل فایل‌های رمزگذاری شده یا بایت‌ها.
  • محدودیت در استفاده در فرم‌ها و فیلترها دارد.
import uuid

class smaple(models.Model):
    id = models.BigAutoField(primary_key=True)
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    ip_address = models.GenericIPAddressField()
    encrypted_data = models.BinaryField()

 

هـ) GenericForeignKey (از django.contrib.contenttypes)

  • برای ایجاد رابطه به مدل‌های مختلف — مکانیزم “Generic Relation”.
  • مثال: سیستم کامنت که برای مقاله، محصول و ویدیو کار کند.
  • نیازمند دو فیلد کمکی (content_type و object_id) است.