【发布时间】:2016-06-18 15:53:00
【问题描述】:
我正在使用 Django REST 框架。我有两个模型,站点和状态。
class Sites(models.Model):
site_id = models.AutoField(primary_key=True)
status = models.ForeignKey(Statuses, models.DO_NOTHING, blank=True, null=True)
class Statuses(models.Model):
status_id = models.AutoField(primary_key=True)
description = models.CharField(max_length=255, blank=True, null=True, unique=True)
class Meta:
managed = True
db_table = 'Statuses'
我希望能够在网站上执行 GET,并返回 Statuses.description 字段(而不是 Statuses.status_id)。另外,我希望它可以在 POST 中互换使用 status_id 或 description 来创建新站点。这种类型的功能属于哪里(序列化程序、模型等)?
我知道我可以通过向 Sites 模型添加一个属性然后在 Sites 序列化程序中引用该字段来完成我的问题的第一部分。
@property
def status(self):
return self.row_status.description
但是我认为模型的约定是它应该是数据库表的 1:1 表示。有没有更好的方法来做到这一点?
【问题讨论】:
标签: python django model django-rest-framework serialization