Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Python Django是指在另一个应用程序中定义的模型->;空查询集_Python_Django_Django Models - Fatal编程技术网

Python Django是指在另一个应用程序中定义的模型->;空查询集

Python Django是指在另一个应用程序中定义的模型->;空查询集,python,django,django-models,Python,Django,Django Models,我有一个名为projects with a model Project的应用程序,我想在另一个名为map的应用程序中引用它,该应用程序包含模型MapData。因此,我可以在map.html模板中使用/访问Project中的数据 根据Django文件 要引用在另一个应用程序中定义的模型,可以显式指定带有完整应用程序标签的模型。例如,如果上面的制造商模型是在另一个名为production的应用程序中定义的,则需要使用: 从projects.models.py: class Project(mode

我有一个名为projects with a model Project的应用程序,我想在另一个名为map的应用程序中引用它,该应用程序包含模型MapData。因此,我可以在map.html模板中使用/访问Project中的数据

根据Django文件

要引用在另一个应用程序中定义的模型,可以显式指定带有完整应用程序标签的模型。例如,如果上面的制造商模型是在另一个名为production的应用程序中定义的,则需要使用:


从projects.models.py:

class Project(models.Model):
    title = models.CharField(max_length=200)
    text = models.TextField()
    date = models.DateField()
    featured_image = models.ImageField(
        upload_to='projects/featured', blank=True)
    lon = models.DecimalField(max_digits=10, decimal_places=8, default=1)
    lat = models.DecimalField(max_digits=10, decimal_places=8, default=1)
    location = models.CharField(max_length=200, blank=True)
from django.db import models

from projects.models import Project

class MapData(models.Model):
    map_data = models.ForeignKey(Project)
从map.models.py:

class Project(models.Model):
    title = models.CharField(max_length=200)
    text = models.TextField()
    date = models.DateField()
    featured_image = models.ImageField(
        upload_to='projects/featured', blank=True)
    lon = models.DecimalField(max_digits=10, decimal_places=8, default=1)
    lat = models.DecimalField(max_digits=10, decimal_places=8, default=1)
    location = models.CharField(max_length=200, blank=True)
from django.db import models

from projects.models import Project

class MapData(models.Model):
    map_data = models.ForeignKey(Project)
但当我访问shell时,我只得到一个空查询集:

>>> from map.models import MapData
>>> MapData.objects.all()
<QuerySet []>
>>从map.models导入地图数据
>>>MapData.objects.all()
关于我的map.models.py文件,我尝试了
OneToOneField(Project)
得到了相同的结果。我尝试了
map\u data=models.ForeignKey(projects.Project)
给我一个name错误,并将
map\u data=models.ForeignKey('projects.Project')
放在引号中,同时给我一个空查询集


有人能解释一下我不明白的地方吗。我想要的只是能够在我的map.html模板中访问
project.lat
project.lon
project.title
project.featured\u image

如果之前没有保存任何
MapData
实例,这是预期的结果。尝试以下方法以更好地了解模型的工作原理:

>>> from map.models import MapData
>>> from projects.models import Project
>>>
>>> p1 = Project()
>>> p1.title = 'First Project'
>>> p1.save()  # We save this project in the database!
>>>
>>> md1 = MapData()
>>> md1.map_data = p1  # We use the above project for this md1
>>> md1.save()  # We save md1
>>>
>>> MapData.objects.all()  # You should get the one that we just created

如果之前没有保存任何
MapData
实例,则这是预期结果。尝试以下方法以更好地了解模型的工作原理:

>>> from map.models import MapData
>>> from projects.models import Project
>>>
>>> p1 = Project()
>>> p1.title = 'First Project'
>>> p1.save()  # We save this project in the database!
>>>
>>> md1 = MapData()
>>> md1.map_data = p1  # We use the above project for this md1
>>> md1.save()  # We save md1
>>>
>>> MapData.objects.all()  # You should get the one that we just created


你以前保存过一些MapData实例吗?不,我想没有。或者我做了一些迁移。那么,当您运行
MapData.objects.all()
时,您希望如何获得结果?您需要先创建
Project
MapData
实例看看我下面的答案,然后尝试执行相同的操作。您以前保存过一些MapData实例吗?不,我不这么认为。或者我做了一些迁移。那么,当您运行
MapData.objects.all()
时,您希望得到什么样的结果呢?您需要先创建
Project
MapData
实例看看我下面的答案,然后尝试同样的方法。我第一次回答时可能误解了。我确实保存了2个项目实例。>>>返回2个实例。和>>>md1.map_data=Project.objects.get(pk=1)返回,但您是对的,运行上述步骤确实有效。因此您需要使用它们创建MapData Instance,然后您可以运行
MapData.objects.all()
我想我可以从Project中绘制这些数据,而不必创建MapData实例……请澄清。我不明白你到底想要什么。如果您只想读取
Project
对象是,您可以通过
Project.objects.all()
读取它们,如果您想读取
MapData
对象,请使用
MapData.objects.all()
抱歉。我只想读一读这个项目。我不想修改地图应用程序中的数据或对其执行任何操作。我只想将几个字段从Project输出到map.html模板。基本上与我在projects_list.html模板中的方式相同。我可能在第一次回答时误解了。我确实保存了2个项目实例。>>>返回2个实例。和>>>md1.map_data=Project.objects.get(pk=1)返回,但您是对的,运行上述步骤确实有效。因此您需要使用它们创建MapData Instance,然后您可以运行
MapData.objects.all()
我想我可以从Project中绘制这些数据,而不必创建MapData实例……请澄清。我不明白你到底想要什么。如果您只想读取
Project
对象是,您可以通过
Project.objects.all()
读取它们,如果您想读取
MapData
对象,请使用
MapData.objects.all()
抱歉。我只想读一读这个项目。我不想修改地图应用程序中的数据或对其执行任何操作。我只想将几个字段从Project输出到map.html模板。基本上与我在projects_list.html模板中使用的方式相同。