簡體   English   中英

使模型字段在Django中兩個字段相等的串聯中

[英]Make model field equal concatenation of two fields in Django

我有兩個模型,並想為第二類創建一個字段,該字段是外部字段和模型中的字段的串聯。

到目前為止,我的代碼是:

class Drug(models.Model):
    drug_name = models.CharField("Drug Name", max_length=200)
    reference_title = models.CharField("Publication Title",max_length=1024)
    pub_date = models.DateField("Pubication Date",'date published')
    pubmed_link = models.CharField("PubMed Link", max_length=300)

class Risk(models.Model):
    drug_link = models.ForeignKey(Drug, on_delete=models.CASCADE)    
    dosage = models.IntegerField(default=0)
    independent_risk = models.DecimalField("Individual Risk", max_digits=4, decimal_places=2)

我想向“風險”模型添加一個新字段,該字段將由drug_link的所選值和劑量的輸入值的串聯自動填充。

這可以通過類上的python屬性完成:

class Risk(models.Model):
    drug_link = models.ForeignKey(Drug, on_delete=models.CASCADE)    
    dosage = models.IntegerField(default=0)
    independent_risk = models.DecimalField("Individual Risk", max_digits=4, decimal_places=2)

    @property
    def name_dosage(self):
         return "%s - %s" % ( self.drug_link.drug_name, self.dosage )

如果您不需要將此值存儲在數據庫中,而是在模板中使用它,則無需創建其他字段。 您可以使用如下方法:

class Risk(models.Model):
    drug_link = models.ForeignKey(Drug, on_delete=models.CASCADE)    
    dosage = models.IntegerField(default=0)
    independent_risk = models.DecimalField("Individual Risk", max_digits=4, decimal_places=2)

    def dosages(self):
        return "{} - {}".format(self.drug_link.drug_name, self.dosage) 

在模板中,您可以執行以下操作:

{% for risk in risks %}
    {{ risk.dosage }}
{% endfor %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM