2011-10-26 36 views
6

İnsanların düşüncelerinin, kullanıcıların profil modeline karşı doğrudan auth.User nesnesine modellere katılma şeklini merak ediyorum.Django Kullanıcı veya Profil modeline ForeignKey yapmalı mıyım?

Kullanıcımın uygulamamda eklediği bazı farklı model türlerini saklıyorum. Uygulama kullanıcıları, bu modellerde bulunan ölçütlerle diğer kullanıcıları arayacak.

Bir yandan, Kullanıcıya doğrudan katılırsam, Kullanıcı'nın kayıtlarını tutmam gerekirse her zaman request.user.get_profile() yapmam gerekmeyeceğini düşünüyorum. Bir Kullanıcının her zaman bir profili olduğunu varsayalım (uygulamasında mo'dayım, ancak yine de). Bu, profil modelini kullanıcının iletişim bilgilerini içerecek şekilde bırakır. Diğer yandan, bu diğer modellere baktığımda profilden (örn. Ad, konum) değerlere büyük olasılıkla ihtiyacım olacağını düşünmüyorum.

Şüphesiz ya işe yarayacak, belki de önemli değil, ama başkalarının düşüncelerinin ne olduğunu merak ettim.

Teşekkürler! Ludo.

cevap

1

Genel olarak: Uygulamalarınızı yeniden kullanılabilir yapmak istiyorsanız, her zaman Kullanıcı modeline yabancı anahtarlar oluşturun.

Daha önce de söylediğin gibi, çoğu durumda Kullanıcıya olduğu kadar Profil örneğine de ihtiyacınız olacak, böylece birden çok veritabanı sorgusunu önlemek için önbellek kullanın.

Yeniden kullanılabilirlik uygun değilse, Profil'e yabancı anahtar oluşturun ve kullanıcı örneğini tek bir sorguyla almak için select_related() öğesini kullanın.

2

Kullanıcı modeline yabancı anahtarlar oluşturmanızı da öneririz. Birincisi, görünümde kullanıcı nesnesiyle çalışırken hayatınızı kolaylaştırır. Yani, profil modeli üzerinden gitmek zorunda kalmadan request.user.foo_set, vb gibi şeyler yapabilirsiniz.

+0

Bunu dikkate almadım. Sesli tavsiyeler. – sleblanc

İlgili konular