我正在尝试学习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"
在代码中的作用。此外,我尝试在文档中搜索它没有成功(我发现这很奇怪)。
非常感谢您的帮助。
答案 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。
通常,在以下情况下使用字符串模型名称:
如果需要在尚未创建的模型上创建关系 定义后,您可以使用模型的名称,而不是模型 对象本身
在抽象模型上以这种方式定义的关系在以下情况下得到解决 该模型被细分为具体模型,并且与 抽象模型的app_label
要引用在另一个应用程序中定义的模型,可以显式 指定带有完整应用标签的模型