如何在 HTTP POST 中引用 ForeignKey 对象?
How to reference ForeignKey objects in HTTP POST?
我在 Django 上有一个 RESTful API,我想知道在 HTTP POST?[=15 中使用 json 时如何引用现有的 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
这是相关模型,我有一个包含 4 个 Faction 对象的列表,它们的主键分别是 0、1、2 和 3。
我试过很多不同的方法,但就是想不通。
这是我最近的尝试,你能告诉我哪里出错了吗?
{
"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
}
编辑:我的朋友帮我解决了这个问题,我在 Trainer 的序列化程序中有 faction = serializers.StringRelatedField()
,它是只读的。
我的朋友帮我解决了,我在Trainer的序列化器中有1faction = serializers.StringRelatedField()1,它是只读的。
我在 Django 上有一个 RESTful API,我想知道在 HTTP POST?[=15 中使用 json 时如何引用现有的 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
这是相关模型,我有一个包含 4 个 Faction 对象的列表,它们的主键分别是 0、1、2 和 3。
我试过很多不同的方法,但就是想不通。 这是我最近的尝试,你能告诉我哪里出错了吗?
{
"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
}
编辑:我的朋友帮我解决了这个问题,我在 Trainer 的序列化程序中有 faction = serializers.StringRelatedField()
,它是只读的。
我的朋友帮我解决了,我在Trainer的序列化器中有1faction = serializers.StringRelatedField()1,它是只读的。