Django rest framework Django REST:允许在POST/PUT中获取或创建外键()
我的情况是,我需要能够发布到一个资源,并自动“get_或_create()ed”具有特定的外键关系 为了简单起见,我将在这里制作一个示例: 让我们假设我想发布一个新地址,城市是一个外键——有数百万个城市。城市资源可能有其他属性,如人口、国家等,但在本例中,假设它们默认为NULL,这样就可以了Django rest framework Django REST:允许在POST/PUT中获取或创建外键(),django-rest-framework,Django Rest Framework,我的情况是,我需要能够发布到一个资源,并自动“get_或_create()ed”具有特定的外键关系 为了简单起见,我将在这里制作一个示例: 让我们假设我想发布一个新地址,城市是一个外键——有数百万个城市。城市资源可能有其他属性,如人口、国家等,但在本例中,假设它们默认为NULL,这样就可以了 address: { street: "...", city: "..." } city: { name: "...", population: 10000, ... } 我有几个问题: 当我使用dj
address: { street: "...", city: "..." }
city: { name: "...", population: 10000, ... }
我有几个问题:
- 当我使用django rest HTML界面时,它会尝试将所有城市添加到一个HTML选项框中,该选项框会挂起浏览器,因为选项太多。我不想要下拉选项框。我需要一个文本框
- 当我提交城市时,我希望创建/更新代码根据名称查找城市并设置关系,或者我希望它创建一个新的城市。本质上是城市名称字段上的get_或_create()。我不希望用户在添加地址之前,必须为每个新城市创建一个新城市
我需要看什么才能把它粘在一起?我假设我需要创建某种自定义字段。我想我可能已经找到了正确的方法:从
序列化程序派生。CharField
并重写到内部值()
到获取或创建()
:
class CityField(serializers.CharField):
def to_internal_value(self, data):
value = super(CityField, self).to_internal_value(data)
return City.objects.get_or_create(name=value)[0]