Bir konu adı ve bunların baş harflerini içermek istediğim bir modelim var. (Veri biraz anonimleştirilerek baş harfleri tarafından takip edilmektedir.)Django Model Alanı Varsayılan Olarak Aynı Modeldeki Başka Bir Alana Dayalı
Şu anda,
class Subject(models.Model):
name = models.CharField("Name", max_length=30)
def subject_initials(self):
return ''.join(map(lambda x: '' if len(x)==0 else x[0],
self.name.split(' ')))
# Next line is what I want to do (or something equivalent), but doesn't work with
# NameError: name 'self' is not defined
subject_init = models.CharField("Subject Initials", max_length=5, default=self.subject_initials)
yazdığı son çizgi ile belirtildiği gibi, ben baş harfleri aslında depolanır var edebilmek tercih edeceğini Bir alan olarak veritabanı (addan bağımsız), ancak ad alanına dayalı bir varsayılan değerle başlatılır. Ancak, django modelleri bir 'kendime' sahip görünmüyor gibi sorunlar yaşıyorum.
Satırı subject_init = models.CharField("Subject initials", max_length=2, default=subject_initials)
olarak değiştirirseniz, syncdb'yi yapabilirim, ancak yeni konular oluşturamıyorum.
Bu, django'da mümkündür, bir callable işlevine sahip olmak, başka bir alanın değerine bağlı olarak bazı alanlara varsayılan değer verir mi?
(Merak ettiğim için, mağaza başlangıçlarımı ayrı ayrı ayırmak istememin sebebi, garip soyadlarının izlediklerimden farklı olabildiği nadir durumlarda ortaya çıkmaktadır. Örneğin, bir başkası, Konu 1 Adlı "John O" Mallory JO 'yerine 'JM'" baş harfleri' ve yönetici olarak düzenlemek düzeltmek istiyor)
'' 'pre_save''' yerine' '' post_save''' ithal ettiniz. – arkocal
@arkocal: Başlıklar için teşekkürler, sadece düzeltildi. Bu gibi durumlarda düzenlemeleri kendiniz önerebilirsiniz, bu gibi şeyleri düzeltmeye yardımcı olur :) –