2011-06-02 110 views
10

我將如何獲得下面的工作?Django調用保存在QuerySet對象上 - 'QuerySet'對象沒有'保存'屬性

player = Player.objects.get(pk=player_id) 
game = Game.objects.get(pk=game_id) 
game_participant = GameParticipant.objects.filter(player=player, game=game) 
game_participant.save() 

我當物體在datbase已經存在,然後我得到:

「查詢集」對象有沒有屬性「保存」。

在我的模型而言,GameParticipantForeignKeyGamePlayer。我知道過濾器返回一個QuerySet,但我不知道如何將其轉換爲GameParticipant或者這不正確的想法?

class Player(models.Model): 
    name = models.CharField(max_length=30) 
    email = models.EmailField() 

class Game(models.Model): 
    game_date = models.DateTimeField() 
    team = models.ForeignKey(Team) 
    description = models.CharField(max_length=100, null=True, blank=True) 
    score = models.CharField(max_length=10, null=True, blank=True) 

class GameParticipant(models.Model): 
    STATUS_CHOICES = (('Y','Yes'),('N','No'),('M','Maybe')) 
    status = models.CharField(max_length=10, choices=STATUS_CHOICES) 
    game = models.ForeignKey(Game) 
    player = models.ForeignKey(Player) 

或者有什麼好辦法做什麼即時通訊?即。與一個.get()而不是.filter(),但然後我碰到其他問題?

+0

你能張貼您的型號代碼爲GameParticipant嗎?檢查並確保您正在擴展models.Model以及預期。你的模型應該有'class GameParticipant(models.Model)'。 – wilbbe01 2011-06-02 23:34:50

+0

爲什麼你想保存你剛剛從db中加載的東西,而不修改它? – 2011-06-03 06:49:39

回答

13

filter返回查詢集。查詢集不是單個對象,而是一組對象,因此在查詢集上調用save()是沒有意義的。相反,你保存每個單獨的對象IN的查詢集:

game_participants = GameParticipant.objects.filter(player=player, game=game) 
for object in game_participants: 
    object.save() 
1

是可能的通過將未保存的對象分配給另一個對象外地字段來獲得此錯誤。

for project in projects: 
     project.day = day 
    day.save() 

正道的是這樣的:

day.save() 
    for project in projects: 
     project.day = day 
相關問題