Django中的“ auth.User”做什么?

时间:2018-12-11 00:00:10

标签: python django authentication

我正在尝试学习Django,并且在书中遇到了以下代码。

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=) 
    author = models.ForeignKey(
        'auth.User',
        on_delete=models.CASCADE,
      )

    body = models.TextField() 

    def __str__(self):
         return self.title

即使我了解了大部分内容,但我并不太真正了解"auth.User"在代码中的作用。此外,我尝试在文档中搜索它没有成功(我发现这很奇怪)。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

'auth.User'指示符指示ForeignKey映射到的模型。因此,对于给定的模型,每个Post记录都会有一个名为author_id的列(_id后缀是Django自动添加的),并且将指向User应用程序(内置应用程序)中的auth表。

有关更多信息,请参见documentation on ForeignKey

答案 1 :(得分:0)

'auth.user'是auth应用程序的模型,该应用程序是Django https://docs.djangoproject.com/en/2.1/ref/contrib/auth/的一部分。在您的代码中,您将字符串'auth.User'用于ForeignKey。我对代码进行了一些修改,以从auth应用程序中显式导入User模型。

    public frmStudent(string strName, string strGrade, string strSex, string strAge, string strPicture, List<string> strScores)

    {
        InitializeComponent();

        picBStudent.Image = Image.FromFile(strPicture);
        picBStudent.SizeMode = PictureBoxSizeMode.StretchImage;
        lblName.Text = strName;
        lblGrade.Text = strGrade;
        lblAge.Text = strAge;
        lblGender.Text = strSex;

    }

ForeignKey接受带有模型或模型类本身的类名称的字符串。 https://docs.djangoproject.com/en/2.1/ref/models/fields/#django.db.models.ForeignKey

通常,在以下情况下使用字符串模型名称:

  1.   

    如果需要在尚未创建的模型上创建关系   定义后,您可以使用模型的名称,而不是模型   对象本身

  2.   

    在抽象模型上以这种方式定义的关系在以下情况下得到解决   该模型被细分为具体模型,并且与   抽象模型的app_label

  3.   

    要引用在另一个应用程序中定义的模型,可以显式   指定带有完整应用标签的模型