Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何从其他模型访问模型字段?这可能吗?_Django_Python 3.x_Django Models_Django Model Field - Fatal编程技术网

Django 如何从其他模型访问模型字段?这可能吗?

Django 如何从其他模型访问模型字段?这可能吗?,django,python-3.x,django-models,django-model-field,Django,Python 3.x,Django Models,Django Model Field,假设我有两个模型 class Project(models.Model): project_number = models.Charfield(primary_key=True, max_length=10) project_title = models.Charfield(max_length=100) total_cost = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=Tr

假设我有两个模型

class Project(models.Model):
    project_number = models.Charfield(primary_key=True, max_length=10)
    project_title = models.Charfield(max_length=100)
    total_cost = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)

class FieldChangeOrder(models.Model):
    project = models.FoereignKey('Project', on_delete=models.CASCADE)
    funding_amount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
    percentage_of_funding = ( funding_amount / total_cost ) * 100
如何从FieldChangeOrder模型中访问项目模型中的总成本,以计算拨款百分比字段的值

我尝试了以下方法

class Project(models.Model):
    project_number = models.Charfield(primary_key=True, max_length=10)
    project_title = models.Charfield(max_length=100)
    total_cost = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)

class FieldChangeOrder(models.Model):
    project = models.FoereignKey('Project', on_delete=models.CASCADE)
    funding_amount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)

    @property
    def percentage_of_funding(self):
        return (self.funding_amount/self.project.total_cost) * 100

但是^FieldChangeOrder对象没有属性“project”时出错


我是django的新手,现在只是涉猎一下。非常感谢任何帮助

简单地说,您可以使用点符号访问外键上的字段:

例如:

field_changer_order = FieldChangeOrder.objects.get(pk=1)
project_total_cost = field_changer_order.project.total_cost

这两个模型之间存在外键关系。关于如何访问其他相互关联的模型中的数据,您做了哪些研究?@dfundako我刚刚用我的尝试更新了总结。请看一看。@AravindMarthinei您编辑的版本应该可以正常工作,您是否在创建模型后忘记了
make migrations
migrate
?@PedramParsian出于某种原因,make migrations返回时未检测到任何更改!可能是因为此更改实际上并没有在表中创建列,而只是使用其他模型中的字段?
makemigrations
仅从已安装的应用程序中获取模型并应用它们。您是否在
设置.py中的
已安装的应用程序中包含应用程序名?