Django/DRFを使用するプロジェクトでは、私は、以下のモデルの構造を有する: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を使うことができますが、このフィールドも書き込み可能にしたいと考えています。私はここにオプションがありますか?
thod、please –
@BearBrownは、作成したメソッド –