python - 如何在 Django 中使用外键?

标签 python django django-models

from django.db import models

# Create your models here.
class ParentDeck(models.Model):
    deck_name = models.CharField(max_length=300, primary_key=True)

    def __str__(self):
        return self.deck_name
    
    
class Flashcard(models.Model):
    cardID = models.AutoField(primary_key=True)
    question = models.CharField(max_length=300)
    answer = models.CharField(max_length=300)
    due_date = models.DateField()
    parent_deck = models.ForeignKey(ParentDeck, null=True, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

这已经让我痛苦了一段时间了。任何帮助将不胜感激!我还是个初学者:)

我尝试查找解决方案并使用 ChatGPT [我了解到 ChatGPT 不太适合这些任务],但似乎没有任何效果。

最佳答案

好的,那么ForeignKeyOne-to-Many关系。

您的设置方式意味着:
每一个Flashcard链接到特定的ParentDeck
ParentDeck链接到多个或一组Flashcard s。

您可以像这样访问链接的部分:

from app.models import Flashcard
f = Flashcard.objects.all().first()
print(f.parentdeck.deck_name)

以下是相反的方式,称为反向查找。

from app.models import ParentDeck
d = ParentDeck.objects.all().first()
linked_flashcards = d.flashcard_set.all()
print(linked_flashcards.first().question)

带下划线的语法-“set”或<object>_set是 django 反向查找的默认实现。

关系的其他选项是:

  • 一对一关系
  • 多对多关系

关于python - 如何在 Django 中使用外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76777579/

相关文章:

python - Django 模型按人类可读的值进行过滤

python - 如何在 Django 1.9 中传递 callable

python - 手机如何知道使用不同的页面?

python - 使用 django-polymorphic 创建许多对象

python - 在模板 if 语句中将字符串连接在一起

python - 如何将整个目录上传到 S3?

django - Jinja2 模板是 Django 模板的超集?

Django admin,如何在查看和编辑期间隐藏特定模型字段

python - 是否可以调试 CherryPy 应用程序?

python - 按一列上的另一个数据框对数据框进行排序 - pandas