I am a little new to Django and Django-REST, so please bear with me. Perhaps the answer is in the documentation, so if I missed this, I apologize in advance.
Purpose:. I would like to create a EquipmentInfo object whose attributes include pre-existing foreign keys (EquipmentType and EquipmentManufacturer).
models.py
class EquipmentType(models.Model): equipment_type = models.CharField(verbose_name="Equipment Type", max_length=50, unique=True) def __unicode__(self): return self.equipment_type class EquipmentManufacturer(models.Model): manufacturer_name = models.CharField(verbose_name="Manufacturer Name", max_length=50, unique=True) def __unicode__(self): return self.manufacturer_name class EquipmentInfo(models.Model): equipment_type = models.ForeignKey(EquipmentType, verbose_name="Equipment Type") part_identifier = models.CharField(verbose_name="Machine ID (alias)", max_length=25) manufacturer_name = models.ForeignKey(EquipmentManufacturer, verbose_name="Manufacturer Name") serial_number = models.CharField(verbose_name="Serial Number", max_length=25) date_of_manufacture = models.DateField(verbose_name="Date of Manufacture", default=date.today) is_active = models.BooleanField(verbose_name="Is Active", default=True) def __unicode__(self): return self.part_identifier
serializers.py
class EquipmentTypeSerializer(serializers.ModelSerializer): class Meta: model = EquipmentType fields = ('id', 'equipment_type',) class EquipmentManufacturerSerializer(serializers.ModelSerializer): class Meta: model = EquipmentManufacturer fields = ('id', 'manufacturer_name',) class EquipmentInfoSerializer(serializers.ModelSerializer): class Meta: model = EquipmentInfo fields = ('id', 'equipment_type', 'part_identifier', 'manufacturer_name','serial_number', 'date_of_manufacture', 'is_active') equipment_type = EquipmentTypeSerializer(many=False) manufacturer_name = EquipmentManufacturerSerializer(many=False) def create(self, validated_data): equipment_type = validated_data.pop('equipment_type') manufacturer_name = validated_data.pop('manufacturer_name') equipment_info = EquipmentInfo.objects.create(**validated_data) return equipment_info
Assuming I already have the corresponding EquipmentType and EquipmentManufacturer objects, I would like to add another EquipmentInfo object. What is a suitable way to configure my EquipmentInfo serializer so that I can pass information such as
{ "equipment_type":{ "equipment_type":"already_created", }, "part_identifier":"something_new", "manufacturer_name":{ "manufacturer_name":"already_created" }, "serial_number":"WBA1", "date_of_manufacture": "1900-01-01", "is_active":true }
or even better:
{ "equipment_type":"already_created", "part_identifier":"something_new", "manufacturer_name":"already_created", "serial_number":"WBA1", "date_of_manufacture": "1900-01-01", "is_active":true }
Any help is appreciated.