from django.contrib.auth.models import AbstractUser from django.db import models class User(AbstractUser): """扩展用户模型""" email = models.EmailField(unique=True) created_at = models.DateTimeField(auto_now_add=True) # 绑定的龙虾列表(JSON 存储) # 示例:[{"agent_id": "flying_hero", "agent_name": "飞行侠", "agent_emoji": "🦸", "instance_id": "phospher-openclaw"}] linked_agents = models.JSONField(default=list, verbose_name='绑定的龙虾', blank=True) class Meta: db_table = 'users' verbose_name = '用户' verbose_name_plural = '用户' # 避免与 auth.User 冲突 app_label = 'users' def __str__(self): return self.username def add_linked_agent(self, agent_id: str, agent_name: str, agent_emoji: str = '🤖', instance_id: str = None): """添加绑定的龙虾""" agent = { 'agent_id': agent_id, 'agent_name': agent_name, 'agent_emoji': agent_emoji, 'instance_id': instance_id } # 避免重复 for i, a in enumerate(self.linked_agents): if a.get('agent_id') == agent_id: self.linked_agents[i] = agent return self.linked_agents.append(agent) self.save() def remove_linked_agent(self, agent_id: str): """移除绑定的龙虾""" self.linked_agents = [a for a in self.linked_agents if a.get('agent_id') != agent_id] self.save() def get_linked_agent(self, agent_id: str): """获取指定的龙虾信息""" for agent in self.linked_agents: if agent.get('agent_id') == agent_id: return agent return None