默认情况下,Django ManyToManyField使用所有对象进行初始化

默认情况下,Django ManyToManyField使用所有对象进行初始化,django,initialization,manytomanyfield,m2m,Django,Initialization,Manytomanyfield,M2m,我有两门课,玩家和游戏。玩家可以拥有多个游戏,因此我们在玩家模型中使用m2m关系: class Player(models.Model): store_user = models.OneToOnefield(User, unique=True, on_delete=models.CASCADE) games = models.ManyToManyField(Game) isDeveloper = models.BooleanField(default=False, bla

我有两门课,玩家和游戏。玩家可以拥有多个游戏,因此我们在玩家模型中使用m2m关系:

class Player(models.Model):
    store_user = models.OneToOnefield(User, unique=True, on_delete=models.CASCADE)
    games = models.ManyToManyField(Game)
    isDeveloper = models.BooleanField(default=False, blank=False)
我的问题是,当一个新玩家注册时,出于某种原因,他们会得到所有添加到数据库中的游戏对象。我怎样才能让新玩家一开始就没有游戏

用户从views.py注册:

def signup(request):
  if request.user.is_authenticated:
      return render(request, 'home.html')
  else:
      if request.method == 'POST':
          user = UserCreateForm(request.POST)
          if user.is_valid():
              user.save()
              temp_user = User.objects.get(username=user.cleaned_data.get('username'))
              s_user = Player(store_user=temp_user, isDeveloper=user.cleaned_data.get('developer'))
              s_user.save()
              return redirect('login')
      else:
          user = UserCreateForm()
      return render(request, 'signup.html', {'form': user})

对于多对多字段,需要使用中间表。详情如下

class播放器(models.Model):
games=模型。ManyToManyField(游戏)

类游戏玩家(models.Model):
players=models.ForeignKey(Player,on_delete=models.CASCADE)

games=models.ForeignKey(Game,on_delete=models.CASCADE)

请从views.py添加更多的代码。@SadmanSobhan我添加了用户注册方法。你凭什么认为玩家获得了数据库中的所有游戏?您还没有编写任何代码来实现这一点。在管理中,选择框仅显示可供选择的所有选项;实际上,你必须选择一些(通过点击它们)将它们添加到播放器中。谢谢,这似乎已经纠正了问题。一旦我能确认,我会把它标记为答案。不,你不需要中间表格。这个答案完全错误。