将默认值设置为django中两个不同字段的组合

时间:2016-07-15 07:15:19

标签: python django

我正在学习Django并为自己学习了一个项目,一个费用经理...... 这是我的代码:

from __future__ import unicode_literals
from django.core.validators import RegexValidator

from django.db import models

# Create your models here.

class Person(models.Model):
    first_name= models.CharField(max_length=15)
    last_name= models.CharField(max_length=15)
    email=models.EmailField(blank=True, verbose_name="E-Mail")
    city= models.CharField(max_length=25)
    state= models.CharField(max_length=30)
    phone_number= models.CharField(max_length=10, validators=[RegexValidator(r'^\d{1,10}$')])

    def __unicode__(self):
        return self.first_name

class Data(models.Model):
    borrower_name= models.ForeignKey(Person, related_name="the_borrower")
    lender_name= models.ForeignKey(Person, related_name="the_lender")
    info= models.CharField(max_length=1000, default="Borrower from Lender")
    witness_name= models.ForeignKey(Person, related_name="the_witness")
    money_lended= models.IntegerField()
    date= models.DateField(null=True)

    class Meta:
        verbose_name_plural = "Data"

    def __unicode__(self):
        return self.info

class Log(models.Model):
    log= models.ForeignKey(Data)
    status= models.CharField(max_length=15)
    date= models.DateField(null=True)

    def __unicode__(self):
        return self.status

我想要做的是在class Data中,我想将info值设置为borrower_namelender_name的组合......

例如:
borrower_name= "SHUBHANK"
lender_name= "SAMEER"
那么info的值应该是

  

来自SAMEER的SHUBHANK

但是我把代码写成:

class Data(models.Model):
    ...
    ...
    info= borrower_name + " from " + lender_name
    ...
    ...
    ...
    def __Unicode__(self):
        return self.info

错误是这样的:

  

TypeError:+:' ForeignKey'不支持的操作数类型和' unicode'

帮我摆脱这个! 在此先感谢!

1 个答案:

答案 0 :(得分:1)

使info成为属性或方法

@property
def info(self):
    return "{} from {}".format(self.borrower_name, self.lender_name)

您将无法在任何查询中使用它,但从您展示它的方式来看,我认为您无论如何都不需要。