如何设置模型属性,在Django查询中切换布尔值?

2024-09-27 09:33:21 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的详细视图中,是否可以将模型中的布尔值设置为false? 我查看了django文档(queryset)中的一些类似于.set()方法的东西,它似乎存在,但不适用于这个特定的情况。 如何在我的视图中切换unread布尔值?在

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

在模型.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) 

在视图.py公司名称:

^{pr2}$

Tags: 方法namepy模型名称视图truemodels
1条回答
网友
1楼 · 发布于 2024-09-27 09:33:21

您不需要使用.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)
        message = context['message_detail']
        message.unread = False
        message.save()
        return context

但是,我不知道在detail视图中将消息标记为read是否是一个好主意,它可能会导致代码重复,这通常不是一个好主意。在

相关问题 更多 >

    热门问题