我是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/

10-12 15:20