python django models.Model 遍历所有字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python django models.Model 遍历所有字段相关的知识,希望对你有一定的参考价值。

现在有
##########################################
class PCR(models.Model):
#所属的项目
project = models.ForeignKey(Project,verbose_name=("项目id"))
#日期
date = models.DateTimeField(verbose_name=("日期"))
#操作人
operator = models.ForeignKey(User,verbose_name=("操作人"))
#############################
....有好多modle
我想根据 类名变量出所有的字段和值在模版里显示

pcr = PCR.objects.get(id=1)

怎么遍历 pcr所有的字段verbose_name 和values
不是 pcr.project 这样啊
还有别的modle

参考技术A pcr._meta.get_all_field_names()可以得到所有field的name,然后你可以用pcr._meta.get_field()得到verbose_name,用getattr()得到value本回答被提问者采纳

如何在 django 中获得特定任务的批准

【中文标题】如何在 django 中获得特定任务的批准【英文标题】:How to get approval for a particular task in django 【发布时间】:2020-11-12 02:13:32 【问题描述】:

我正在创建任务,我需要有一个用于批准的 URL。在这种情况下,创建任务实例的人可以请求其他用户(不一定是管理员)批准某些更改。这些批准请求将以表格的形式显示在批准者的仪表板上,他可以在其中批准/拒绝它们。 这是我的代码:

models.py:

class Approvals(models.Model):
    task = models.ForeignKey(Task_category, on_delete=models.CASCADE)
    requester = models.ForeignKey(User, related_name='Requester', on_delete=models.CASCADE)
    priority = models.CharField(max_length=50)
    approver = models.ForeignKey(User,related_name='Approver', on_delete=models.CASCADE)
    description = models.CharField(max_length=400)
    created_at = models.DateTimeField(auto_now_add=True)
    due_date = models.DateField(null=True,blank=True)
    approved = models.BooleanField(default=False)

views.py:

class PendingApprovals(viewsets.ModelViewSet):
    http_method_names = ["get","update"]
    queryset = Approvals.objects.all()
    serializer_class = ApprovalSerializer
    to_approved = Approvals.objects.filter(approver=request.user,approved='False')

我能够获得给定用户必须批准的所有任务的列表,但我不知道如何批准它们,即如何更改其布尔字段标签。 任何帮助将不胜感激。 TIA。

【问题讨论】:

【参考方案1】:

您可以随时向您的模型添加一个方法,以便您可以通过 Approvals.set_approval() 访问它并切换它的当前批准状态。

class Approvals(models.Model):
    task = models.ForeignKey(Task_category, on_delete=models.CASCADE)
    requester = models.ForeignKey(User, related_name='Requester', on_delete=models.CASCADE)
    priority = models.CharField(max_length=50)
    approver = models.ForeignKey(User,related_name='Approver', on_delete=models.CASCADE)
    description = models.CharField(max_length=400)
    created_at = models.DateTimeField(auto_now_add=True)
    due_date = models.DateField(null=True,blank=True)
    approved = models.BooleanField(default=False)

    def set_approval(self):
        self.approved = not self.approved

【讨论】:

您能否详细说明它将如何提供帮助

以上是关于python django models.Model 遍历所有字段的主要内容,如果未能解决你的问题,请参考以下文章

如何用Django建关系表

表格的每一行中的 Django 表单

Django 中间模型中的访问字段

Django模型层:单表多表操作F与Q查询

如何通过ajax Django发布复选框数据?

Django - XML 文件中的产品详细信息