python - 如何设置 Model 属性,在 Django 查询中切换 bool 值?

标签 python django

是否可以在下面的详细信息 View 中将模型中的 bool 值设置为 false ? 我浏览了 django 文档(queryset),寻找类似于 .set() 方法的内容,它似乎存在,但不适用于这种特殊情况。 如何通过我的 View 切换 Models.py 中的 unread bool 值?

另外,我在这里误解了什么以及更好/合适的方法是什么?

模型.py:

class Message(models.Model):
    recipient = models.ForeignKey(CustomUser, on_delete = models.CASCADE,related_name = 'recipient',null = True)
    sender = models.ManyToManyField(CustomUser,related_name = 'messages')
    date = models.DateTimeField(auto_now_add=True, blank=True)
    subject = models.CharField(max_length = 1000, blank = True)
    message = models.TextField(blank=True, null=True)
    unread = models.BooleanField(default = True) 

View .py:

### Message detail class
class MessageInboxDetail(DetailView):
'''
This view lets the user view the details of a message created
'''
context_object_name = 'message_detail'
model = Message
template_name = "myInbox/message_detail.html"

def get_context_data(self, **kwargs):
    context = super(MessageInboxDetail, self).get_context_data(**kwargs)
    context.update({
        'message_detail': Message.unread.set(False) }) # Message(unread=True/False)
    return context

最佳答案

您不需要使用 .set(..) 调用来设置模型实例的字段,而是通过分配给属性(在幕后,Django 已经修补了 __get____set__ 函数)。

因此,我们可以通过从上下文中检索message对象来获取它(使用context['message_detail'],然后更改它的状态,最后保存更新数据库版本。例如:

class MessageInboxDetail(DetailView):
    '''
    This view lets the user view the details of a message created
    '''
    context_object_name = 'message_detail'
    model = Message
    template_name = "myInbox/message_detail.html"

    def get_context_data(self, **kwargs):
        context = super(MessageInboxDetail, self).get_context_data(**kwargs)
        <b>message = context['message_detail']
        message.unread = False
        message.save()</b>
        return context

但是,我不知道在详细 View 中将消息标记为已读是否是一个好主意,它可能会导致代码重复,这通常不是一个好主意。

关于python - 如何设置 Model 属性,在 Django 查询中切换 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51748727/

相关文章:

python 列表理解步骤 2

python - 使用 XlsxWriter 对行进行分组

python - 如何在Django中使用FileSystemStorage上传OpenCV修改的图像文件?

python - GenericAPIView 中的嵌套操作

python - 有效地预测数字处理算法的输出

python 动态范围正则表达式

javascript - 从 JavaScript 转换为 Python 代码?

python - 一种以字符串形式存储相对日期的方法

python - Django Rest Framework - 如何编写多个嵌套字段序列化器(用于读取和写入)

django - 对 ContentType 感到困惑