presented in this question ile aynı bilmece var, ancak Django'nun auth.User.request.user bir proxy auth.User sınıfına nasıl dönüştürülür?
Bu vekil modeli vardır:
class OrderedUser(User):
def __unicode__(self):
return self.get_full_name()
class Meta:
proxy=True
ordering=["first_name", "last_name"]
Ve diğer modellerin bazıları bir OrderedUser
yerine alan türleri gibi django.contrib.auth.models.User
bir kullanımı.
'Cannot assign "<User...>": <field> must be a "OrderedUser" instance'
ben OrderedUser.objects.get(request.user.id)
sadece yapabileceği, ama bu veritabanına ekstra isabet: bir hatayla - beklendiği gibi - Benim görünümlerinde
Sonra request.user
bir alanı doldurmak ve kullanmak.
Nasıl bir temel model sınıfını proxy sınıfına dönüştürmek?
doğrudan buradan örneği kullanarak katman kod böyle görünebilir. DB'ye isabet etmeyen bir mekanizma var mı? – cethegeek
Evet, hile kopyalayarak hile yaptı. Teşekkürler Daniel. – cethegeek
Bu bahşiş için teşekkürler. Bununla birlikte, bir kullanıcı nesnesini şablonlara iletmek için bir context_processor'da kullanırken, kullanıcı giriş yapmamışsa, bunu farklı bir şekilde yapmanız gerekir. Ancak, elinizde olduğu gibi, her zaman biter. bir OrderedUser nesnesi (Kullanıcıdan türetilmiş), ancak kullanıcı giriş yapmadıysa, AnonymousUser türünde olmalıdır. Bu yüzden, 'request.user.is_authenticated()' ifadesini test ederdim ve eğer öyleyse, yalnızca yukarıdaki işlemleri yapardım. Else, do 'o = request.user'. –