Django, nasıl farklı bir db tabloya çalışmak için Kullanıcı sınıfını değiştirebilirim?

oy
1

Biz yanında Django çalıştırıyorsanız - ve bir veritabanını paylaşan - Mevcut uygulamada. Ve biz kullanıcı bilgilerini kaydetmek üzere mevcut bir kullanıcı tablosunu (değil Django kendi) kullanmak istiyorum.

o Kullanıcı tanımının Meta sınıfında Django kullanan tablonun adını değiştirmek mümkün gibi görünüyor.

Ama biz Django çekirdeğini kendisi değiştirmek yapmamayı tercih ediyorum.

Bu yüzden düşündükleri biz olabilir alt sınıf böyle çekirdek auth.User sınıfı:

class OurUser(User) :
    objects = UserManager()
    class Meta:
        db_table = u'our_user_table'

Burada amaç özelleştirilmiş Kullanıcı sınıfına herhangi bir ekstra alanlar eklemek için değildir. Ama alternatif tablo kullanmak için.

(ORM varsayarak çünkü our_user_table öyle değil orijinal Kullanıcı masaya, sürekli dönüp bir yabancı anahtar olmalıdır muhtemeldir) Ancak bu başarısız olur.

Demek ki ne yapmak istediğinizi yapmak için bu mantıklı bir yoldur? Ben tablolar üzerine sınıfları eşleştirmek için bazı kolay yolu kaçırmış mı? Ya da, eğer bu işe yapılabilir?

Güncelleme:

Ben sadece maymun-yama Bir local_settings.py içinde Kullanıcının _meta tarafından istediğim değişiklik yapmak mümkün olabilir düşünüyorum

User._meta.db_table = 'our_user_table'

Herkes Eğer bunu yaparsam olabilirdi kötü bir şey olabilir? (Özellikle oldukça tipik Django / Pinax uygulama bağlamında?)

Oluştur 15/05/2009 saat 00:41
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
6

Bunu kullanışlı bir şekilde eski tablo kurmak için bulabilirsiniz alternatif kimlik doğrulama kaynağı ve tüm bu konuları kaçınmak.

Başka bir seçenek olan kullanıcıyı alt sınıfı ve kullanıcı modeline alt sınıf noktası var. Orada size eski işlevselliğini korumak için yapmanız gereken her şeyin sağlamak için kaydetme fonksiyonu geçersiz kılar.

Kendimi Bunlardan birini yapmadım ama umarım onlar yararlı noktalar şunlardır.

Güncelleme Daha sonra, standart Django tablodaki modelin bir örneğini oluşturur eski masanın karşısında kopyalar alanları ve - ben bu durumda alternatif kimlik doğrulaması ile ne demek "Evet, bu geçerli bir kullanıcı adı / şifre" yazan küçük bir piton script arayan kişiye yeni bir kullanıcı döndürür.

Eğer senkronize iki tablo tutmak gerekiyorsa, size alternatif kimlik doğrulama standart bir django kullanıcı oluşturmak ve sadece söylemek asla karar verebilir "Evet, bu geçerli bir parola ve kullanıcı adı"

Cevap 15/05/2009 saat 00:50
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more