You need to enable JavaScript to run this app. 如何在ViUR中通过代码为relationalbone添加新条目
优惠活动
大模型
产品
解决方案
定价
更多

如何在ViUR中通过代码为relationalbone添加新条目

向ViUR框架RelationalBone添加新条目的实现方法

RelationalBone是ViUR核心框架中用于管理跨模块关联关系的字段类型,通过后端Python代码添加关联条目可按以下步骤操作:

  • 第一步:确认关联双方的Skeleton定义
    首先确保你已经在对应模块中正确声明了带RelationalBone的Skel结构,参考示例:
    from viur.core.skeleton import Skeleton, RelationalBone, StringBone
    
    # 被关联的目标Skeleton,例如分类模块
    class CategorySkel(Skeleton):
        name = StringBone(required=True)
    
    # 包含RelationalBone的源Skeleton,例如文章模块
    class ArticleSkel(Skeleton):
        title = StringBone(required=True)
        # 关联到category模块的Skel,允许多选
        related_category = RelationalBone(kind="category", multiple=True)
    
  • 第二步:后端代码新增关联条目
    如果要给已有条目新增关联对象,直接操作对应RelationalBone字段赋值即可,支持单次添加单个或多个关联对象:
    # 1. 获取要添加关联的源条目实例
    article_skel = ArticleSkel().fromDB("your-article-entry-key")
    # 2. 获取要关联的目标条目key(支持Key对象或字符串格式key)
    new_category_key = CategorySkel().all().filter("name =", "技术教程").getKey()
    # 3. 给RelationalBone添加新关联条目(multiple=True的字段为列表格式)
    if new_category_key not in article_skel["related_category"]:
        article_skel["related_category"].append(new_category_key)
    # 4. 保存更改即可完成新增
    article_skel.toDB()
    
  • 常见注意事项
    • 如果RelationalBone设置了multiple=False,直接赋值为目标条目key即可,不需要调用append方法
    • 赋值时可以直接传入目标Skeleton实例、Key对象或者合法的字符串格式条目key,框架会自动转换
    • 如果需要同时给RelationalBone的refKeys属性赋值额外关联字段,赋值时传入字典格式即可:
      article_skel["related_category"] = {
          "key": new_category_key,
          "custom_ref_field": "自定义关联属性值"
      }
      

内容的提问来源于stack exchange,提问作者Roberto Brink

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 03:27:05