我是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
在类
Tag
中,它使用的是models.ForeignKey(Contact)
,根据我的理解,外键应该在表的一个特定列上建立,但是为什么ForeignKey
直接在表上建立,即表Contact
?任何指导都受到高度赞赏。
最佳答案
只有扩展了models.Model
类,您才能将其理解为数据库中的表。
这将成为一个表:
class Order(models.Model):
pass
这不会成为模型:
class SomeHelper():
....
至于ForeignKey,它将自动绑定到其他模型的主键。您可以通过在ForeignKey中设置
to_field
来更改它,但是默认值为pk
:models.ForeignKey(Bar, to_field='non-pk-field')
关于python - Django model.py models.ForeignKey(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48678868/