2017-09-08 7 views
0

私はDjangoでRESTfulなAPIを持っています.HTTP POSTでjsonを使用するときに既存のForeignKeyを参照する方法を知りたいですか?私は多くの異なった方法を試してみたHTTP POSTでForeignKeyオブジェクトを参照する方法は?

class Trainer(models.Model): 
    account = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, related_name='profiles') 
    username = models.CharField(max_length=30, unique=True, primary_key=True) 
    start_date = models.DateField(default=date(2016,7,13), null=True, blank=True) 
    faction = models.ForeignKey('Faction', on_delete=models.SET_DEFAULT, default=0, null=True, verbose_name="team") 
    has_cheated = models.BooleanField(default=False) 
    last_cheated = models.DateField(null=True, blank=True) 
    currently_cheats = models.BooleanField(default=False) 
    statistics = models.BooleanField(default=True) 
    daily_goal = models.IntegerField(null=True, blank=True) 
    total_goal = models.IntegerField(null=True, blank=True) 
    last_modified = models.DateTimeField(auto_now=True) 
    prefered = models.BooleanField(default=True, verbose_name="main profile") 

    def __str__(self): 
     return self.username 

class Faction(models.Model): 
    name = models.CharField(max_length=140) 
    colour = RGBColorField(default='#929292', null=True, blank=True) 
    image = models.ImageField(upload_to=factionImagePath, blank=True, null=True) 
    leader_name = models.CharField(max_length=140, null=True, blank=True) 
    leader_image = models.ImageField(upload_to=leaderImagePath, blank=True, null=True) 

    def __str__(self): 
     return self.name 

これは、関連するモデルであり、私は

を、彼らの主キーが0であることと、4つのファクションオブジェクトのリストを持っている1、2と3が、ちょうどIそれを理解することはできません。 これは私の最新の試みでしたが、どこが間違っているのかアドバイスできますか?

{ 
    "username": "Bob123", 
    "faction": "1" 
} 

{ 
    "username": "Bob123", 
    "faction": "Teamless", 
    "start_date": "2016-07-13", 
    "has_cheated": false, 
    "last_cheated": null, 
    "currently_cheats": false, 
    "statistics": true, 
    "daily_goal": null, 
    "total_goal": null, 
    "last_modified": "2017-09-08T21:05:18.001389Z", 
    "prefered": true, 
    "account": null 
} 

編集を返しました:私の友人は解決策で私を助け、私は読み取り専用であるトレーナーのためのシリアライザでfaction = serializers.StringRelatedField()を持っていました。

答えて

0

私の友人は私に解決策を教えてくれました.1faction = serializers.StringRelatedField()は、Trainerのシリアライザでは読み取り専用です。

関連する問題