django - 如何根据外键范围设置django对象的主键范围,是否可取?
问题描述
我有以下型号:
class Author(model):
name = CharField(...)
class Post(mode):
author = ForeignKey(Author)
title = CharField(...)
假设我们最多有 100 个作者。所以作者的主键将在 1 到 100 的范围内我希望帖子模型的主键基于帖子作者的主键。
我的意思是,如果作者的主键是 34,那么他/她的帖子主键是 34000001、34000002、34000003
建议这样做,我该怎么做?
解决方案
这通常是不可取的,并且可能会诱使您遵循(或发明)反模式。例如,如果您的目标是能够轻松访问特定作者的帖子,那么使用 Django 的普通 ORM 模式是最安全的。例如:
# models.py
class Author(model):
name = CharField(...)
class Post(model):
author = ForeignKey(Author, related_name='posts')
title = CharField(...)
然后,你可以在任何你想要的地方...
sally = Author.objects.get(id=1)
sallys_posts = author.posts.all()
这比你可能想做的事情安全得多,比如Post.objects.filter(pk__startswith=sally.pk)
我认为这会导致大量错误,也意味着你错过了很多正常的 Django 模式ORM 的好处。
推荐阅读
- excel - 将范围作为变量从一张纸插入另一张纸
- r - 在R中组合向量和列表
- python - 如何在另一个python中使用函数的变量
- arrays - 我在数组中查找最小元素的循环输出 0 而不是正确的值 x86 程序集?
- google-sheets - Google 表格:从具有不同列的选项卡中推断数据
- redirect - prestashop 1.7,如何在admintab上添加模块的配置链接?
- java - PrintStream 无法解析为类型。为什么?
- javascript - Google Maps API 获取地图比例控制值
- java - 替换字符串中的提及
- r - R 中的波浪号 (~.)