Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.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 - Fatal编程技术网

Python Django-使用外键从另一个模型引用数据

Python Django-使用外键从另一个模型引用数据,python,django,Python,Django,我是Django的新手,所以请告诉我我是否在正确的轨道上。 我正在构建一个Django项目,我只是想问一下,从一个模型中检索数据并在另一个模型中使用它的正确Django方法是什么 我有一个for循环将所需的字段分配给变量,但我正在寻找一个更干净的解决方案,如果存在,则使用外键 下面是一个涉及的代码示例: #MODELS class Class1(models.Model): tag_number = models.CharField(max_length = 300, null = T

我是Django的新手,所以请告诉我我是否在正确的轨道上。 我正在构建一个Django项目,我只是想问一下,从一个模型中检索数据并在另一个模型中使用它的正确Django方法是什么

我有一个for循环将所需的字段分配给变量,但我正在寻找一个更干净的解决方案,如果存在,则使用外键

下面是一个涉及的代码示例:

#MODELS

class Class1(models.Model):
    tag_number = models.CharField(max_length = 300, null = True, blank = True)
    example1 =  models.CharField(max_length = 300, null = True, blank = True)
    example2 =  models.CharField(max_length = 300, null = True, blank = True)

class Class2(models.Model):
    tag = models.ForeignKey(Class1, related_name = 'tag_foreignkey')
    example3 =  models.CharField(max_length = 300, null = True, blank = True)
    example4 =  models.CharField(max_length = 300, null = True, blank = True)



#VIEWS - This view is for Class2 but referencing fields from Class1

tag_number = str(instrumentform.cleaned_data['tag'])
query_results = Class1.objects.filter(tag_number = tag_number)
for query_result in query_results:
        example5 = query_result.example1
        example6 = query_result.example2
上述方法可以工作,但我认为这不是Django的工作方式,也没有利用外键


如果有人能给我一个正确的方向,我将不胜感激。

我不知道你在这里想要实现什么。我在想象PstCalc=Class1 然而,如果你有

c1 = Class1()
c2 = Class2()
c3 = Class2()
and
c2.tag = c1
c3.tag = c1
使用foreignkey,您将拥有:

c1.class2_set = (c2, c3) <- this would be a queryset, not a list
c2.tag = c1 => c2.tag.example1 = c1.example1
c1.class2\u set=(c2,c3)c2.tag.example1=c1.example1

…希望我能让自己明白:)

不过,还是不能百分之百地知道你想要什么,因为有一些信息不见了。 对于Class1,您应该像对待Class2一样,使用外键来存储标记

对于底部的代码,有一种简单的方法。(假设您使用了外键)


我想你可能正在Django寻找很多关系。请查看文档:
tag_number = int(instrumentform.cleaned_data['tag'])
for query_result in Class1.objects.filter(tag = tag_number).values_list('example1', 'exmaple2'):
    example5, example6 = query_result