Django özel kullanıcı modeline (CustomUser) geçiş yaptım, bu modelde başka modellerde yabancı anahtar ve M2M ilişkileri var. CustomUser ayrıca Zinnia'nın yazar modeli (Yazar) tarafından alt sınıflıdır - Zinnia mükemmel bir üçüncü parti blog uygulaması.Django özel kullanıcı modeli alt sınıf (by Zinnia)
Sorunum, CustomUser öğesine bir ilişki aracılığıyla erişebildiğimde, örneğin OtherModel.customuser bir CustomUser örneğini döndürür, ancak isteklere eriştiğimde görünümlerim arasında.Kullanıcı bir örneğidir. Author ve CustomUser öznitelikleri özdeş olduğu için bu genel olarak çok fazla bir fark yaratmıyor, ancak Görünümlerimdeki kullanıcı nesnelerinin eşdeğerliğini test etmek istiyorsam, request.user yerine user.user.id kullanmam gerekiyor ve ben de içgüdüsel olarak ' Hangi modelle uğraştığımın belirsizliğini seviyorum.
Muhtemelen, her şeyi göründüğümden daha iyi ele alıyorum ve her şey işime yaramıyor. Mükemmel bir dünyada, yine de, aynı Kullanıcı modeline tutarlı bir şekilde atıfta bulunacağım ama en iyi nasıl ilerleyeceğinden emin değilim. Herhangi bir fikir?
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)
(profiller uygulamada)
settings.py
AUTH_USER_MODEL = 'profiles.CustomUser'
models.py ben documentation yılında öneri ile doğrudan settings.AUTH_USER_MODEL ile ilişkisini yapmaktır ziyade biliyorum özel kullanıcı modeli. Bunu değiştirmek için plan ama bir göçün acısını tekrar başlatmadan önce ne yaptığımı anlamak istiyorum
Konsol get_user_model (Infrom 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()
) profillerini döndürür author.py (zinnia uygulamasında) .models.CustomUser class
aynı olması konu. bir çözüm buldun mu? – Blaise