Bir address
tablo var ve bir postal_code
alan vardır ki - PKler doğru varlığını doğrulamak için daha ModelChoiceField bana başka bir şey kullanmasına izin vermiyor? Gitmenin yolu ne olurdu? Normal giriş ve clean_*()
kullanın?Django ModelChoiceField - id'den başka bir şey mi kullanıyorsunuz?
cevap
ModelChoiceFields mevcut modeli örneklerinin tercih arasında seçmek için kullanılabilir içindir. Bu hemen hemen her zaman en iyi Seçim alanı tarafından temsil edilir.
Eğer gerçekten ima etmeye çalıştığını olarak Postal_Code için adresinden bir FK var Söylediğin. Her adresle ilgili sorgu için birleştirilmesi gereken ekstra tabloyu haklı çıkarmak için bir PostalCode tablosunda ne saklıyorsunuz?Çoğu durumda, postal_code basitçe bir CharField olmalıdır ve bu durumda, değerin geçerli olduğunu doğrulamak isterseniz, geçerli posta kodlarının bir listesiyle choices
özniteliğini kullanabilirsiniz. Geçerli posta kodlarının bir listesini el ile tutmanın büyük bir güçlük olduğunu unutmayın.
gerçekten yapar, bir PostalCode tablo var ve bu birincil anahtar yerine mutlaka eşsiz olduğundan varsayılan autoincrement olarak Postal_Code kullanarak aslında düşünebilirsiniz iyi bir fikir (bazı durumlarda olabilir) olduğunu düşünüyorsan Verileriniz daha fazla ihraç edilebilir ve sorununuzu doğrulama ile çözer.
postal_code
, geçerli posta kodları içeren bir PostalCode modelinin yabancı bir anahtarıysa, yalnızca bir CharField kullanın ve önerdiğiniz gibi temizleyin. Benim temiz yöntem şu şekilde görünecektir:
def clean_postal_code(self):
try:
code = PostalCode.objects.get(code_field=self.data['postal_code'])
except:
raise forms.ValidationError("Please enter a valid postal code")
return code
Ne to_field_name
hakkında? Ben her yerde belgelenen pek emin değilim, ancak kolayca ModelChoiceField
yapıcı params arasında bulabilirsiniz: https://github.com/django/django/blob/master/django/forms/models.py. Alan sorgulamalarını filtrelemek için kullanılır.
:
articles = ModelChoiceField(queryset=Articles.objects.all(),
to_field_name='slug')
Mükemmel çalışır. instance' argüman 'kullanıldığında' model_to_dict' zorla PK (aslında 'value_for_object') kullanır gibi, kırık dikkat – user240515
, 1.4 (henüz 1.5 denemediyseniz, üzgünüm). ': Bir geçici bir çözüm için 'YourForm ({foo.bar.slug "çubuk"} ..., örneğin = foo ilk =) ilgilidir. Detaylar için bkz. 'BaseModelForm .__ init__'. – drdaeman
@drdaeman [Nitekim] (https://code.djangoproject.com/ticket/20202) – valtron
- 1. ModelChoiceField Django
- 2. ModelChoiceField,
- 3. modelchoicefield django düzen sırasını değiştir
- 4. Django: ModelChoiceField varsayılanı kaldır --------- choice
- 5. Rails chartkick: yalnızca eksenlerde tamsayı değerleri almak. Ayrık veya başka bir şey mi kullanıyorsunuz?
- 6. Django formu, ModelChoiceField ile kaydedilmiyor - ForeignKey
- 7. GitHub'ı başka bir Hata izleme ile mi kullanıyorsunuz?
- 8. Bir modül açıklaması bekleniyor, başka bir şey mi buldunuz?
- 9. Seçici yerine bir blok nesnesi mi kullanıyorsunuz?
- 10. formlar ModelChoiceField queryset + extra seçim alanları django formları
- 11. Bir StringBuilder'ı F # içinde yapmak için doğru bir şey mi kullanıyorsunuz?
- 12. DPAPI'yi Python ile mi kullanıyorsunuz?
- 13. Hub yöntemlerini denetleyiciden mi kullanıyorsunuz?
- 14. şey başka OnPostExecute
- 15. Bir işlev mi yoksa tip yöntemi mi kullanıyorsunuz?
- 16. WPF'de başka bir denetim opaklık maskesi olarak mı kullanıyorsunuz?
- 17. Java ScriptEngine: Java tarafında değer mi kullanıyorsunuz?
- 18. Eğer başka bir şey varsa/Kombinasyonu değiştir
- 19. Windows hizmeti/ASP sitesi/başka bir şey?
- 20. ModelChoiceField örneklerini şablonda nasıl edinilir
- 21. Parametreleri geçirmek için GWT Geçmişi'ni mi kullanıyorsunuz?
- 22. CookieParser() ve cookieSession() birlikte mi kullanıyorsunuz?
- 23. google-app-engine-django veya app-engine-patch'i kullanmalı mıyım yoksa ne de başka bir şey mi kullanmalıyım?
- 24. Bu ilişki bir toplama, kompozisyon veya başka bir şey midir?
- 25. bower install html5boilerplate iyi bir şey mi?
- 26. UITableViewCell'in DetailTextLabel boş bir şey mi var?
- 27. Tip Silme: Bir şey özledim mi?
- 28. Marionette.ItemView modelini kullanmadan görünümler için mi kullanıyorsunuz?
- 29. Öğe nesnesini jQuery yöntemiyle mi kullanıyorsunuz?
- 30. Render'ı i18n yapmak için mi kullanıyorsunuz?
ilişki gemi postal_code' modelinin 'arasında' primary_key' ile varsayılan ITS tarafından, nasıl ayarlandığını bağlıdır. Adresiniz ve ilgili "postal_code" modelleri gibi daha fazla ayrıntı verebilir misiniz? Bir 'ModelChoiceField' varsayılan olarak, ilgili modelin varolan örnekleri olarak seçeneklerle bir açılır menü oluşturur. – Pannu