【问题标题】:models.ForeignKey() in djangodjango中的models.ForeignKey()
【发布时间】:2021-10-06 00:44:23
【问题描述】:

这是我的代码

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

所以我对models.DateTimeField(default=timezone.now) 的作用有点困惑,这里的“默认”是什么意思?

我也很困惑models.ForeignKey(User, on_delete=models.CASCADE) 是做什么的,“on_delete=models.CASCADE”是什么意思?

这段代码 (from django.contrib.auth.models) 是供用户使用的数据库吗?

【问题讨论】:

    标签: python django web backend


    【解决方案1】:

    models.DateTimeField(default=timezone.now)do,这里的“默认”是什么意思?

    您可以将可调用对象传递给default=… 参数。当模型对象被创建,并且date_posted没有值时,它会调用timezone.now函数并将结果作为date_posted的值。

    我也很困惑models.ForeignKey(User, on_delete=models.CASCADE) 做什么,on_delete=models.CASCADE 做什么和意味着什么?

    ForeignKey 指的是一个对象。问题是如果它所指的对象被删除了怎么办。使用on_delete=… [Django-doc],您可以指定策略。 CASCADE 表示它将从 User 中删除 Post(s),如果 User 本身被删除。

    这段代码(来自 django.contrib.auth.models)是用户的数据库吗?

    这些是在auth 应用程序中定义的模型。 Django 有这样的应用程序可以很容易地从一个简单的用户模型开始,但你可以决定实施你自己的。通常使用settings.AUTH_USER_MODEL [Django-doc] 来引用用户模型比直接使用User model [Django-doc] 更好。更多信息可以查看referencing the User model section of the documentation

    【讨论】:

    • 非常感谢您提供的详细信息,这对您有帮助?
    猜你喜欢
    • 2011-05-16
    • 2016-08-16
    • 2021-07-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 2021-09-18
    • 2012-12-04
    • 1970-01-01
    相关资源
    最近更新 更多