# -*- coding: utf-8 -*-
# 手机:13584935775
# Copyright 昆山一百计算机有限公司 2012-2025 Amos
# 日期:2024/5/6
from datetime import datetime, timedelta
from functools import partial
from itertools import groupby
from odoo import api, fields, models, tools, SUPERUSER_ID, _
from odoo.exceptions import UserError, ValidationError
from odoo.tools.misc import formatLang
from odoo.osv import expression
from odoo.tools import float_is_zero, float_compare
from werkzeug.urls import url_encode
class xodoo_blog(models.Model):
_name = "xodoo.blog"
_description = "博客"
_order = 'id desc'
name = fields.Char(string='标题', )
seo_description = fields.Char(string='描述', )
seo_keywords = fields.Char(string='关键字', )
user_id = fields.Many2one('res.users', string='作者', index=True,default=lambda self: self.env.user)
category_id = fields.Many2one('xodoo.blog.category', string='分类', index=True)
sequence = fields.Integer(string='排序', default=10)
click = fields.Integer(string='点击', default=1)
content = fields.Html(string='正文')
top = fields.Boolean(default=True, string='顶置')
publish = fields.Boolean(default=False, string='是否发布')
active = fields.Boolean(default=True, string='归档')
image = fields.Image('图片', help="图片尺寸801*534",copy=False, attachment=True, max_width=1024, max_height=1024)
tag_ids = fields.Many2many('xodoo.blog.tag', 'xodoo_blog_xodoo_blog_tag_rel', 'blog_id', 'tag_id')
def button_publish(self):
"""
是否发布
"""
for record in self:
record.publish = not record.publish
段代码定义了一个名为xodoo_blog
的Odoo模型,用于表示博客文章。逐一解释一下:
_name = "xodoo.blog"
: 定义了模型的名称,这将用作数据库表名和模型的标识符。_description = "博客"
: 为模型添加了描述信息,用于标识模型的用途。_order = 'id desc'
: 指定了默认的排序顺序,按照id字段的降序排列。name = fields.Char(string='标题')
: 定义了一个Char类型的字段,用于存储博客文章的标题。seo_description = fields.Char(string='描述')
: 定义了一个Char类型的字段,用于存储博客文章的描述信息。seo_keywords = fields.Char(string='关键字')
: 定义了一个Char类型的字段,用于存储博客文章的关键字信息。user_id = fields.Many2one('res.users', string='作者', index=True, default=lambda self: self.env.user)
: 定义了一个Many2one类型的字段,用于关联到res.users
模型,表示博客文章的作者。category_id = fields.Many2one('xodoo.blog.category', string='分类', index=True)
: 定义了一个Many2one类型的字段,用于关联到xodoo.blog.category
模型,表示博客文章的分类。sequence = fields.Integer(string='排序', default=10)
: 定义了一个Integer类型的字段,用于存储博客文章的排序值。click = fields.Integer(string='点击', default=1)
: 定义了一个Integer类型的字段,用于存储博客文章的点击次数。content = fields.Html(string='正文')
: 定义了一个Html类型的字段,用于存储博客文章的正文内容。top = fields.Boolean(default=True, string='顶置')
: 定义了一个Boolean类型的字段,表示是否将博客文章置顶。publish = fields.Boolean(default=False, string='是否发布')
: 定义了一个Boolean类型的字段,表示博客文章是否已发布。active = fields.Boolean(default=True, string='归档')
: 定义了一个Boolean类型的字段,表示博客文章是否处于归档状态。image = fields.Image('图片', help="图片尺寸801*534", copy=False, attachment=True, max_width=1024, max_height=1024)
: 定义了一个Image类型的字段,用于存储博客文章的图片。tag_ids = fields.Many2many('xodoo.blog.tag', 'xodoo_blog_xodoo_blog_tag_rel', 'blog_id', 'tag_id')
: 定义了一个Many2many类型的字段,用于关联到xodoo.blog.tag
模型,表示博客文章的标签。
接下来是一个方法:
def button_publish(self)
: 定义了一个方法,用于切换博客文章的发布状态。当调用该方法时,会将publish
字段的值取反,即如果原来是False,则变为True,反之亦然。