Django:使用唯一键的灯具中的引用关系

假设我有以下数据库模型:

class Team(models.Model):
    name = models.CharField(max_length=50,unique=True)


class Player(models.Model):
    name = models.CharField(max_length=50,unique=True)
    team = models.ForeignKey(Team,on_delete=models.CASCADE)

我正在创建一个夹具,将初始数据加载到这些表中,如下所示:

# TEAMS
- model: load.team
  fields:
    id: 1
    name: Raiders

# PLAYERS
- model: load.player
  fields:
    team: 1
    name: Derek Carr
- model: load.player
  fields:
    team: 1
    name: Darren Waller

这很好用,但是我想通过其唯一的列name(对于更易于理解的文件)引用球队,因此球员的装备看起来像这样:

# PLAYERS
- model: load.player
  fields:
    team: Raiders
    name: Derek Carr
- model: load.player
  fields:
    team: Raiders
    name: Darren Waller

除了将Team.name设置为主键外,还有其他方法吗?

smallkids 回答:Django:使用唯一键的灯具中的引用关系

我认为您可以为此使用Natural keys

您应该为Team创建一个自定义管理器,并实现get_by_natural_key函数。您还应该在Team对象上定义一个natural_key函数:

class TeamManager(models.Manager):
    def get_by_natural_key(self,name):
        return self.get(name=name)

class Team(models.Model):
    ...

    objects = TeamManager()

    def natural_key(self):
        return (self.name,)

然后,您可以使用dumpdata --natural-foreign使用播放器的自然键创建固定装置。

本文链接:https://www.f2er.com/3103942.html

大家都在问