django - 如何简单地获取模型的 BooleanField 如果且只有一个模型在 Django 中为真,则该模型为真?
问题描述
我有以下模型,它有两个布尔字段。由于我的逻辑,它们在任何时候都不会是真的。True
我怎样才能以简单直接的方式获得该领域?
class Vote(models.Model):
poller = models.ForeignKey(Poller, on_delete=models.CASCADE, related_name='vote')
user = models.ForeignKey(Account, on_delete=models.CASCADE)
created_on = models.DateTimeField(auto_now_add=True)
poller_choice_one_vote = models.BooleanField(default=False)
poller_choice_two_vote = models.BooleanField(default=False)
def __str__(self):
return f'Vote by {self.user}'
这就是我现在的做法:
voted_for = Vote.objects.get(poller_id=poller_id, user=request.user)
is_true = voted_for.poller_choice_one_vote
is_also_true = voted_for.poller_choice_two_vote
if is_true:
voted_for = voted_for.poller_choice_one_vote
elif is_also_true:
voted_for = voted_for.poller_choice_two_vote
else:
pass
解决方案
像这样的东西可能是使用元来获取字段的名称:
voted_for = Vote.objects.get(poller_id=poller_id, user=request.user)
one = voted_for.poller_choice_one_vote
two = voted_for.poller_choice_two_vote
if one:
voted_for = Vote._meta.get_field(one)
elif two:
voted_for = Vote._meta.get_field(two)
推荐阅读
- php - 无法从 .htaccess 移动重定向中排除目录?
- node.js - 无法使用 Multer S3 NodeJ 将大文件上传到 AWS
- php - 为什么我的 AJAX 请求会打印出整个页面的 HTML 代码?
- matlab - 如何在给定的 voronoi 图中找到交点
- java - 是否可以在 java 中使用具有多个可选参数的泛型方法
- java - Java - 设定值范围
- c - 为什么这个搜索员工的循环找不到员工?
- swift - 如何在不知道路径的情况下从 firebase 获取所有子数据
- sql - 如何在 PostgreSQL 中找到每个类别中的三个最大值?
- javascript - web javascript - 转换延迟