Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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 model.py models.ForeignKey()_Python_Django - Fatal编程技术网

Python Django model.py models.ForeignKey()

Python Django model.py models.ForeignKey(),python,django,Python,Django,我是Django框架的新手,对模型有点困惑 当model.py中有一个“类”时,我能把它理解为数据库中的“表”吗?例如,在下面的代码中,“Test”、“Contact”和“Tag”都是Django使用的数据库中的表吗 from django.db import models class Test(models.Model): name = models.CharField(max_length=20) class Contact(models.Model): name

我是Django框架的新手,对模型有点困惑

当model.py中有一个“类”时,我能把它理解为数据库中的“表”吗?例如,在下面的代码中,“Test”、“Contact”和“Tag”都是Django使用的数据库中的表吗

from django.db import models

class Test(models.Model):
    name = models.CharField(max_length=20)

class Contact(models.Model):  
    name   = models.CharField(max_length=200)        
    age    = models.IntegerField(default=0)        
    email  = models.EmailField()       
    def __unicode__(self):            
       return self.name

class Tag(models.Model):        
    contact = models.ForeignKey(Contact)
    name    = models.CharField(max_length=50)
    def __unicode__(self):
        return self.name
在类
标记中,它使用的是
模型。根据我的理解,外键(联系人)
应该建立在表的一个特定列上,但是为什么
外键
直接建立在表上,即表
联系人


非常感谢您的指导。

外键将建立到具有主键的列中。 一个表中只有一个主键,
因此在django中,您只需给出表名。它将自动与具有主键的列一起建立


如果您在列中未提及任何主键,django models将自动添加一个
id
列,该列的每个条目都具有唯一的非空整数值。

如果要显式为特定列指定外键,可以执行以下操作:

models.ForeignKey(TableName, db_column='Column_name')

只有扩展了
models.Model
class,才能将类理解为数据库中的表

这将成为一个表:

class Order(models.Model):
    pass
这不会成为一种模式:

class SomeHelper():
    ....
至于ForeignKey,它将自动绑定到另一个模型的主键。您可以通过在该外键中将
设置为_field
来更改,但默认值为
pk

models.ForeignKey(Bar, to_field='non-pk-field')

非常感谢你,它确实帮助了我@HenryJ很高兴能帮助你。@HenryJ哦,听起来很棒,欢迎来到stack overflow,随时分享你的疑问,并尝试为其他人提供答案。谢谢