問題的更新回答:如何在顯示藥物時獲得查找值(來自Atc)以在交易表(藥物)上顯示?django ForeignKey display
解決方案,使用嵌入在模型本身的關係薩維里奧的做法:
models.py
class Atc(models.Model):
id = models.CharField(max_length=60, primary_key=True, db_column='ID')
txt = models.CharField(max_length=690, db_column='TXT')
class Meta:
db_table = u'ATC'
def __unicode__(self):
return u"%s - %s" % (self.id, self.txt)
class Drug(models.Model):
id = models.CharField(max_length=64, primary_key=True, db_column='ID')
atc = models.ForeignKey(Atc, db_column='ATCCD')
pricetopharm = models.FloatField(db_column='PRICETOPHARM')
brandnm = models.CharField(max_length=135, db_column='BRANDNM')
drugnm = models.CharField(max_length=240, db_column='DRUGNM')
class Meta:
db_table = u'DRUGS'
def __unicode__(self):
return u"%s - %s" %(self.drugnm, self.formandstrength)
而且在admin.py
class DrugsAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['id']}),
('ATC', {'fields': ['atc','brandnm'] }),
(None, {'fields': ['drugnm']}),
('Prices', {'fields': ['pricetopharm']}),
]
search_fields = ['drugnm','brandnm']
admin.site.register(Drug, DrugsAdmin)
admin.site.register(Atc)
的關鍵點是加到models.py
atc = models.ForeignKey(Atc, db_column='ATCCD')
與藥物(事務,而不是參考表)和
('ATC', {'fields': ['atc','brandnm'] }),
到admin.py字段集來表示多對一的關係。
現在,admin.py的內容不太相關(它應該在MTV哲學中)。此外,以單數(Drug,not Drugs)重命名對象是有幫助的,如果沒有別的, (即藥品不Druggs)。去掉重複的小號的的 結果是藥物顯示屏顯示ID的下拉框+ TXT如P04H11 - 細胞毒素
感謝您的幫助球員 皮特
(太初級漢堡回答我自己的問題,因此編輯原始問題!)
謝謝Saverio。這是我猜的最合理的方法:返回並調整models.py以開始。當我按照我的方式工作時,會更新! – Pete855217