私はデバイスとデバイスグループ用のテーブルを持っています。それらの間の関係は、1つのグループのみにあることが可能であり、すなわち、同じデバイスが複数のグループに存在することはできない。しかし、同じグループには複数のデバイスを持つことができます。そのために私は私のAPIのは整数ではなく文字列で表示されます
モデル
class Device(BaseDevice):
"""
This stores Device
"""
description = models.TextField(blank=True, null=True)
device_group = models.ForeignKey('DeviceGroup', null=True, blank=True)
created_on = models.DateTimeField(auto_now_add=True)
updated_on= models.DateTimeField(auto_now=True)
class DeviceGroup(models.Model):
name = models.CharField(max_length=250, blank=False, null=False)
created_on = models.DateTimeField(auto_now_add=True)
updated_on= models.DateTimeField(auto_now=True)
シリアライザ
class DeviceSerializer(serializers.ModelSerializer):
id = serializers.UUIDField(source='token', format='hex', read_only=True)
io = DeviceIOSerializer(read_only=False, many=True, required=False)
class Meta:
model = Device
fields = ('id', 'name', 'description', 'io', 'device_group')
としての私のモデルを設計している私は"device_group": 1
として整数でデバイスグループを参照してください。文字列に表示されている場合は、 "device_group": "personal"でなければなりません。どのように私は文字列で表示できますか? DeviceとDeviceGroupの関係を正しく表示する方法もありますか?
私の場合、名前はユニークです。私はここで何が起こっているのか理解するためにこれを試みます。 – Serenity
私のモデルデザインとシリアライザは私のケースに合っていますか?デバイスは1つのグループにしか存在できません(同じデバイスは複数のグループに含めることはできません)が、グループには複数のデバイスを含めることができます。 – Serenity
DeviceSerializer内でdevice_group = serializers.StringRelatedField(many = True)を実行すると、空のデータオブジェクトが取得されます。 – Serenity