【发布时间】:2017-12-17 15:50:30
【问题描述】:
在一个使用 Django / DRF 的项目上;我有以下模型结构:
class City(models.Model):
name = models.CharField(max_length=100)
class Company(models.Model):
city = models.ForeignKey(City)
.
.
以及以下公司模型的序列化器结构:
class CompanySerializer(serializers.ModelSerializer):
city_name = serializers.CharField(write_only=True)
.
.
class Meta:
model = Company
fields = ('city_name',)
def create(self, validated_data):
# Get city
city_name = validated_data.pop('city_name')
try:
city = City.objects.get(name__iexact=city_name)
except City.DoesNotExist:
city = City.objects.create(name=city_name.title())
company = Company.objects.create(city=city, **validated_data)
return company
在通过序列化程序创建公司时,用户提供了一个 city_name,如果不存在,我会使用该名称创建一个新城市,如果存在则使用现有条目。在这种结构中,我希望能够在返回公司时返回 city_name 字段。它不是模型上的字段,所以我可以正常使用 SerializerMethodField,但我也希望这个字段也是可写的。我在这里有什么选择吗?
【问题讨论】:
-
请告诉你创建方法
-
@BearBrown 用 create 方法更新了问题
标签: django django-rest-framework