Как я могу использовать две модели в одном сериализаторе в django

Поскольку Python3.6 существует метод choices из модуля random .

Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.0.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import random

In [2]: random.choices(
...:     population=[['a','b'], ['b','a'], ['c','b']],
...:     weights=[0.2, 0.2, 0.6],
...:     k=10
...: )

Out[2]:
[['c', 'b'],
 ['c', 'b'],
 ['b', 'a'],
 ['c', 'b'],
 ['c', 'b'],
 ['b', 'a'],
 ['c', 'b'],
 ['b', 'a'],
 ['c', 'b'],
 ['c', 'b']]

И люди также упоминали, что есть numpy.random.choice , которые поддерживают весы, НО не поддерживают 2d массивы и т. Д.

Итак, вы можете получить все, что захотите (см. обновление) с помощью встроенного random.choices, если у вас есть 3.6.x Python .

UPDATE: As @roganjosh , random.choices не может возвращать значения без замены, как упоминалось в docs :

Вернуть a k (g15)

И блестящий ответ @ ronan-paixão гласит, что numpy.choice имеет аргумент replace, который управляет этим поведением.

0
задан nithin singh Gm 13 July 2018 в 11:18
поделиться

1 ответ

Расширьте свой сериализатор, чтобы включить поле страны, подобное этому

class StatesDetailSerializer(ModelSerializer):

    country = serializers.PrimaryKeyRelatedField(queryset=countries.objects.all()) 

    class Meta:
        model = states
        fields= ( 'country', ** plus all the fields you want **)
        depth = 1

note: не используйте __all__ для полей. Всегда лучше указывать, какие поля вы хотите сериализовать (чтобы избежать потенциальных уязвимостей в вашем приложении)

0
ответ дан Enthusiast Martin 17 August 2018 в 13:04
поделиться
  • 1
    Уважаемый энтузиаст Мартин, спасибо вам большое, это сработало – nithin singh Gm 13 July 2018 в 11:34
  • 2
    @nithinsinghGm рад, что я мог помочь – Enthusiast Martin 13 July 2018 в 11:34
Другие вопросы по тегам:

Похожие вопросы: