Bunu yapmanın kolay bir yolu var mı?Model alan seçimleri özelliğini çalışma zamanında mı ayarlayın?
cevap
herhangi iterable ilişkilendirme İstediğiniz seçenekleri hesaplayan fonksiyon. Django bunu başladıktan sonra http://docs.djangoproject.com/en/1.1/ref/signals/#post-init
Bu, modele erişmek verecek ve böylece o zaman seçimler ayarlayabilirsiniz:
Ayrıca Modeli post_init sinyali kullanarak araştırmak olabilir. Muhtemelen "_meta" arayüzünü kullanarak gitmek isteyebilirsiniz:
instance._meta.get_field_by_name('FIELD_NAME')[0].choices = [<choices>...]
Neredeyse işe yaradı. Geçerli seçenekleri görebiliyorum, ancak farklı bir değere ayarlamaya çalışırsam, hatayı alıyorum: AttributeError: özniteliği ayarlayamıyorum. –
Alanlar kaynağının çevresinde dolaşırken, "seçimlerin" salt okunur bir özellik olduğunu görebilirsiniz: http://code.djangoproject.com/browser/django/tags/releases/1.1.1/django/db/models /fields/__init__.py#L296 Bunun yerine "_choices" ayarlamayı deneyin. Bu, kabukta çalışır ancak istenmeyen sonuçlarla ilgili herhangi bir garanti vermeyeceğim. –
EVET! Bu benim için çalışıyor. Çok teşekkürler. –
in __init__()
seçimlerini yapın. seçimler aslında değerlendirilir öznitelik zaman test etmedim http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.choices
bu kendim kadar emin değilim, ama bir jeneratör atamak mümkün olabilir: Sen seçimler ayarlayabilirsiniz
Üzgünüm, net değildim. Bir model başlatıldıktan sonra seçenekler özniteliğini ayarla/değiştir. –
- 1. Varlık Çerçevesinde boolean için model özelliğini ayarlayın
- 2. Django alan seçimleri düzgün güncellenmiyor
- 3. Numpe/openblas üzerinde çalışma zamanında maksimum iş parçacığı sayısını ayarlayın
- 4. Çalışma zamanında
- 5. nasıl otomasyon test frmework aşağıdaki özelliğini eklemek istediğiniz çalışma zamanında
- 6. Çalışma zamanında veya montaj zamanında direktifler/talimatlar var mı?
- 7. Model veritabanına eklemeden alan içermeli mi?
- 8. Çalışma zamanında menü değiştirme
- 9. Çalışma zamanında görüntü ekleme
- 10. çalışma zamanında dinamik
- 11. Çekirdeği çalışma zamanında değiştirin
- 12. Çalışma zamanında XAML yükleniyor?
- 13. Çalışma zamanında node.js sürümünü edinin
- 14. Çalışma zamanında dosya uzantısını değiştirme
- 15. Çalışma zamanında Ehcache önbellek boyutu
- 16. Kotlin'de, çalışma zamanında delegasyonu değiştirmek mümkün mü?
- 17. Çalışma zamanında hazırda bekletme yapılandırması
- 18. Luigi - Unilfilled% s çalışma zamanında
- 19. knockout.js çalışma zamanında yükleme şablonları
- 20. Çalışma zamanında Clojure "sabitlerini" ayarlama
- 21. TypeScript - Modül çalışma zamanında tanımsız
- 22. Çalışma zamanında Guice bağlarının değiştirilmesi
- 23. Çalışma zamanında sql_mode nasıl değiştirilir
- 24. javafx çalışma zamanında css değiştirme
- 25. Çalışma zamanında Java-Bayt Kodunu yükle
- 26. Paket Kimliği'ni çalışma zamanında almanın bir yolu var mı?
- 27. Java'da çalışma zamanında yöntem adı nasıl değiştirilir?
- 28. C# Sınıfı çalışma zamanında oluşturun ve değiştirin
- 29. Django model - varsayılan kareyi varsayılan olarak ayarlayın
- 30. C# Yansımayı Kullanarak Çalışma Zamanında Döküm Tipi
Merak etme, bunun için kullanım durumunuz nedir? –
Seçimler listesini veritabanından almaya çalışıyorum. Ayrıca çeviri kullanıyorum ve veritabanına girdiklerinden, çeviri dizesini etiketleyemiyorum. –
Bu seçenekler kullanıcılara mı maruz kalıyor veya sadece iç mantık için kullanılıyor mu? Bu, formlar düzeyinde ele alınabilecek bir şey olup olmadığını merak ediyorum, çünkü orada dinamik olarak seçim yapmak çok daha yaygın. Model seviyesindeki seçeneklerin değiştirilmesi, ilk etapta modele karar vermenin amacını ortadan kaldırıyor gibi görünüyor. Belki bu farklı bir şekilde ele alınabilir mi? –