Tôi đã di chuyển sang mô hình người dùng tùy chỉnh Django (CustomUser) mà một số mô hình khác có quan hệ khóa ngoài và M2M. CustomUser cũng được phân loại bởi mô hình tác giả của Zinnia (Tác giả) - Zinnia là một ứng dụng viết blog tuyệt vời của bên thứ ba.Mô hình người dùng tùy chỉnh Django được phân loại (bởi Zinnia)
Vấn đề của tôi là khi tôi truy cập CustomUser qua một mối quan hệ, ví dụ: OtherModel.customuser nó trả về một thể hiện của CustomUser, nhưng trong quan điểm của tôi khi tôi truy cập request.User nó là một thể hiện của tác giả. Vì các thuộc tính của Author và CustomUser giống hệt nhau nên nói chung không tạo ra nhiều khác biệt nhưng nếu tôi muốn kiểm tra sự tương đương của các đối tượng người dùng trong Views của tôi, tôi phải sử dụng request.user.id chứ không phải request.user và bản năng don ' Tôi thích sự mơ hồ mà tôi đang xử lý.
Có thể tôi tốt hơn khi vượt qua nó và để lại mọi thứ vì chúng hoạt động sau khi một vài thay đổi nhỏ trong quan điểm của tôi. Tuy nhiên, trong một thế giới hoàn hảo, tôi sẽ đề cập nhất quán đến cùng một mô hình Người dùng nhưng tôi không chắc chắn cách tốt nhất để tiến bộ. Bất kỳ ý tưởng?
settings.py
AUTH_USER_MODEL = 'profiles.CustomUser'
models.py (trong ứng dụng hồ sơ)
class CustomUser(AbstractUser):
visits = models.PositiveIntegerField(
_('visits'),
default=0,
blank=True
)
def __unicode__(self):
return self.username
class OtherModel(models.Model):
author = models.ForeignKey(CustomUser)
Tôi biết các khuyến nghị trong documentation là làm cho mối quan hệ với settings.AUTH_USER_MODEL hơn là trực tiếp với mô hình người dùng tùy chỉnh. Tôi dự định sẽ thay đổi điều đó, nhưng muốn hiểu những gì tôi đang làm trước khi tung ra một lần nữa vào nỗi đau của một di dân
author.py (trong ứng dụng giống cây bách nhựt)
from django.contrib.auth import get_user_model
@python_2_unicode_compatible
class Author(get_user_model()):
"""
Proxy model around :class:`django.contrib.auth.models.get_user_model`.
"""
objects = get_user_model()._default_manager
published = EntryRelatedPublishedManager()
Trong giao diện điều khiển get_user_model() trả về các cấu hình .models.CustomUser class
Tôi có cùng vấn đề. Bạn đã tìm thấy một giải pháp? – Blaise