Как сделать копию связанного поля в django-rest-framework - PullRequest
0 голосов
/ 03 июля 2019

fields - это список лайков в имени EavAttribute ['a', 'b', 'c']

fields_order - список лайков в порядке в EavAttribute [1,2,3], foreign keys то же самое с полями.

Я хочу сделать копию полей в serializer списке полей заказа.

class EavForm(models.Model):
    name = models.CharField(max_length=300)

class EavAttribute(models.Model):
    form = models.ForeignKey(EavForm, on_delete=models.CASCADE, related_name='fields')
    name = models.CharField(max_length=300)
    order = models.IntegerField(default=1)

class EavFormSerializer(serializers.ModelSerializer):
    fields = serializers.SlugRelatedField(many=True,read_only=True,slug_field='name')

    # not work here ,how to fix 
    fields_order = serializers.SlugRelatedField(many=True,read_only=True,slug_field='order')

    class Meta:
        model = EavForm
        fields = '__all__'

1 Ответ

0 голосов
/ 03 июля 2019

вы можете использовать Serializermethodfield

class EavFormSerializer(serializers.ModelSerializer):
    fields = serializers.SlugRelatedField(many=True,read_only=True,slug_field='name')


    fields_order = serializers.SerializerMethodField()

    def get_field_order(self, obj):
        return obj.fields.all()
...