2013-02-27 3 views
14

Tôi có một câu hỏi liên quan đến mô hình người dùng tùy chỉnh trong Django 1,5Khi sử dụng Custom tài Model trong Django 1,5

Vì vậy, ngay bây giờ mô hình người dùng mặc định trông giống tốt với tôi, tôi chỉ cần thêm một vài khác các biến như giới tính, vị trí và ngày sinh để người dùng có thể điền vào các biến sau khi họ đã đăng ký thành công và kích hoạt tài khoản của họ.

Vì vậy, cách tốt nhất để triển khai kịch bản này là gì?

Tôi có phải tạo một ứng dụng mới có tên là Hồ sơ và kế thừa AbstractBaseUser không? và thêm biến tùy chỉnh của tôi vào models.py? Bất kỳ ví dụ tốt cho tôi để làm theo?

cảm ơn bạn trước

+0

Nếu bạn không worring về tối ưu hóa cơ sở dữ liệu bạn có thể tạo mô hình hồ sơ bổ sung và làm cho one-to-one liên quan đến mô hình người dùng từ django.contrib.auth.models. Những thay đổi trong Django 1.5 cho phép bạn tạo mô hình người dùng tùy chỉnh, trong trường hợp này, mô hình tương ứng với 1 bảng cơ sở dữ liệu. Không cần thiết phải tạo một ứng dụng riêng biệt riêng biệt, bạn có thể thêm mô hình vào một số models.py phổ biến. Nhưng nếu bạn muốn, bạn có thể. – sergzach

Trả lời

27

Bạn muốn mở rộng mô hình người dùng của mình vào AbstractUser và thêm các trường bổ sung của bạn. AbstractUser kế thừa tất cả các trường hồ sơ người dùng chuẩn, trong khi AbstractBaseUser bắt đầu bạn từ đầu mà không cần bất kỳ trường nào trong số đó.

Thật khó để xác định các phương pháp hay nhất gần với bản phát hành, nhưng có vẻ như trừ khi bạn cần xác định lại mô hình Người dùng một cách quyết liệt, thì bạn nên sử dụng AbstractUser nếu có thể.

Here are the docs for extending the User model using AbstractUser

bạn models.py sau đó sẽ giống như thế này:

class MyUser(AbstractUser): 
    gender = models.DateField() 
    location = models.CharField() 
    birthday = models.CharField() 

MyUser sau đó sẽ có email tiêu chuẩn, mật khẩu, tên người dùng, vv lĩnh vực mà đi kèm với mô hình dùng, và ba của bạn thêm các trường phía trên.

Sau đó, bạn cần phải thêm AUTH_USER_MODEL-settings.py của bạn:

AUTH_USER_MODEL = 'myapp.MyUser'

+1

Câu trả lời hay, chưa có phương pháp mới - được ghim. :-) – Matt

+1

Cảm ơn Mr.Hoerst vì đã trả lời rất nhiều và có nhiều thông tin. :) – Iqbal

+0

trong khi tôi tạo người dùng tôi nhận được lỗi này: 'Trình quản lý không khả dụng; Người dùng đã được đổi chỗ cho 'myapp.MyUser'' – suhailvs