Verilerimi yönetmek için Django yöneticisini kullanıyorum. Kullanıcılarım, Gruplarım ve Etki Alanları tablolarım var Kullanıcılar tablosunda Gruplar ve Etki Alanları tabloları ile birçok ilişki var. Etki alanları tablosunda, Gruplar tablosuyla bire çok ilişki var. ve Kullanıcı verilerini yönetici aracılığıyla kaydettiğimde, users_group ve users_domains tablosunda bazı ek veritabanı güncellemelerine de ihtiyacım var. Bunu nasıl yaparım? Kodu nereye koyayım. Teşekkürler.Django Yönetici
cevap
InlineModels ürününü arıyorum. İlgili modelleri ana modelle aynı sayfada düzenlemenize izin verir. Bundan daha fazla kontrol arıyorsanız, ModelAdmin save methods'u geçersiz kılabilirsiniz.
Ayrıca, bir şeye ihtiyacınız olduğunda her zaman Manual'a bakın. Gerçekten çok iyi.
Diğer veritabanı tablolarını güncellemenin en iyi yolu, gerekli kayıt ve kaydetme işlemlerini gerçekleştirmektir. Ancak, çoktan çoğa ilişkiniz varsa, varsayılan olarak, ilişkinin her iki tarafına bir _set parametresinden erişilebilir. Yani, user.group_set.all() size bir grupla ilişkili tüm Grup nesnelerini verirken, group.user_set.all() size bir grupla ilişkilendirilmiş tüm Kullanıcı nesnelerini verir. Eğer geçersiz kılarsanız yöntemini kaydetmek (veya sinyal işleyici kaydetmek - seçenek üslup daha hoş sesler hangisi) Yani, deneyin:
for group in user.group_set.all():
#play with group object
....
group.save()
Paolo: Kurtarmam yöntemini geçersiz gerekiyor gibi görünüyor. Daha önce de belirttiğim gibi, birkaç veritabanı tablosunu güncellemem gerekiyor ... ve işlemlerin geri kalanı her zamanki gibi çalışıyor. Bunu nasıl yaparım. Teşekkürler –
Örnek belgelere bakın. AdminModel sınıfında save_model adlı bir işlevi tanımlayın ve ihtiyacınız olanı yapın. –
Sadece save_model ile uğraşıyordum. Burada yapılan tüm ifadeler çalıştırılıyor ve açıkça kaydetme() işlevini çağırmama rağmen kaydetme işlemi devam ediyor gibi görünüyor. Bu doğru davranış. Django web sitesinde daha fazla belge bulamıyorum. Teşekkürler. –