Rumah >pembangunan bahagian belakang >Tutorial Python >Cara Terbaik Memanjangkan Model Pengguna Django dengan Medan Tersuai?

Cara Terbaik Memanjangkan Model Pengguna Django dengan Medan Tersuai?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-16 13:29:14263semak imbas

How to Best Extend the Django User Model with Custom Fields?

Memperluaskan Model Pengguna Django: Pendekatan Optimum

Apabila memanjangkan model Pengguna Django terbina dalam dengan medan tersuai, dua pendekatan utama menonjol :

1. Menggunakan Harta OneToOneField(Pengguna)

Ini ialah pendekatan Django yang disyorkan dan melibatkan penciptaan model baharu dengan perhubungan satu dengan satu dengan model Pengguna. Model "profil" ini boleh menyimpan maklumat tambahan tentang pengguna.

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    # Custom fields here, e.g.:
    address = models.CharField(max_length=255)
    phone_number = models.CharField(max_length=15)
    # ...

2. Menggantikan dengan Model Pengguna Tersuai

Pendekatan ini melibatkan menggantikan model Pengguna Django sepenuhnya dengan model tersuai yang merangkumi pengubahsuaian yang diingini. Walau bagaimanapun, ia dianggap drastik dan disertakan dengan amaran:

  • Ia boleh memecahkan fungsi Django lain yang bergantung pada model Pengguna.
  • Ia melibatkan penyalinan dan pengubahan modul pengesahan Django.
  • Ia mungkin memerlukan pelaksanaan semula pengesahan mekanisme.

Menggunakan E-mel sebagai Nama Pengguna

Untuk menggunakan e-mel sebagai nama pengguna, anda boleh sama ada:

  • Timpa get_username () kaedah dalam model Pengguna tersuai anda.
  • Gunakan kaedah set_username() untuk mengemas kini nama pengguna sesuatu pengguna sedia ada.

Contoh:

class CustomUser(AbstractUser):

    def get_username(self):
        return self.email

# ...
user = CustomUser.objects.get(username='john@example.com')
user.set_username('jack@example.com')
user.save()

Atas ialah kandungan terperinci Cara Terbaik Memanjangkan Model Pengguna Django dengan Medan Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn