我的环境

  • IDE:VSCode
  • VSCode的扩展
      • Python
      • 皮兰斯
      • 拉夫
      • Python 类型提示
      • 排序
      • DjLint
      • Django
      • 黑色格式

我的问题是什么

我正在和Django 一起做一个测验提交网站.

我为一个测验和一个用户创建了一个models.py文件,如下所示:

class User(AbstractUser):
    pass

class Quiz(models.model):
    title = models.CharField(max_length=50)
    content = models.TextField()
    user = models.ForeignKey(
        User, on_delete=models.CASCADE, related_name="posted_quizzes"
    )
    correct_answer = models.CharField(max_length=50)

由于Django 的related_name反向查询功能,上面的代码将属性posted_quizzes添加到User类.

这是一个非常有用的函数,但仅通过查看User类并不明显,即使它是User类的属性.

我经常定义新的方法,忘记它们可以通过related_name访问.

有没有办法直接从User类中查看通过related_name添加的属性?

我所try 的

我try 将其作为未实现的属性直接添加,如下所示:

class User(AbstractUser):
    @property
    def posted_quizzes(self):
        """
        defined by related_name of Quiz model

        posts the user posted
        """
        pass

class Quiz(models.model):
    title = models.CharField(max_length=50)
    content = models.TextField()
    user = models.ForeignKey(
        User, on_delete=models.CASCADE, related_name="posted_quizzes"
    )
    correct_answer = models.CharField(max_length=50)

这种方法很好,因为它不会更改迁移,但它的代码太多.

推荐答案

您可能可以添加注释:

class User(AbstractUser):
    posted_quizzes: QuerySet

是否可以从User类直接查看通过Related_NAME添加的属性?

例如,专业版的PyCharm(JetBrains)有一个额外的模块,可以对Django有更多的"了解",因此它可以判断Django模型,并可以自动执行自动完成.

Python相关问答推荐

根据不同列的值在收件箱中移动数据

如何找到满足各组口罩条件的第一行?

Julia CSV for Python中的等效性Pandas index_col参数

如何将多进程池声明为变量并将其导入到另一个Python文件

Django REST Framework:无法正确地将值注释到多对多模型,不断得到错误字段名称字段对模型无效'<><>

迭代嵌套字典的值

从Windows Python脚本在WSL上运行Linux应用程序

如何在TensorFlow中分类多个类

在Admin中显示从ManyToMany通过模型的筛选结果

从旋转的DF查询非NaN值

并行编程:同步进程

BeautifulSoup-Screper有时运行得很好,很健壮--但有时它失败了::可能这里需要一些更多的异常处理?

freq = inject在pandas中做了什么?''它与freq = D有什么不同?''

在第一次调用时使用不同行为的re. sub的最佳方式

浏览超过10k页获取数据,解析:欧洲搜索服务:从欧盟站点收集机会的微小刮刀&

Python OPCUA,modbus通信代码运行3小时后出现RuntimeError

pytest、xdist和共享生成的文件依赖项

如何将列表从a迭代到z-以抓取数据并将其转换为DataFrame?

使用Scikit的ValueError-了解

将索引表转换为Numy数组