Я хочу разрешить сохранение определенного поля c, только если оно отвечает на какое-то утверждение. Позвольте мне объяснить.
models.py
class classe(models.Model):
name = models.CharField(max_length=191)
groups = models.ManyToManyField('Group')
persons = models.ManyToManyField('Person')
class Group(models.Model):
name = models.CharField(max_length=191)
persons = models.ManyToManyField('Person')
class Person:
name = models.CharField(max_length=191)
serializers.py
class GroupSerializer(serializers.ModelSerializer):
persons = PersonSerializer(many=True, read_only=True)
person_id = serializers.PrimaryKeyRekatedField(queryset=Person.objects.all(), write_only=True)
def update(self, instance, validated_data, **kwargs):
instance.name = validated_data.get('name', instance.name)
person_field = validated_data.get('person_id)
classe = instance.classe_set #This one doesn't work
person_classe = classe.persons.all() #This one too
if (person_field in person_classe):
instance.persons.add(person_field)
instance.save()
return instance
Таким образом, person_field может быть сохранено, только если человек находится в фактическом classe .
Все работает нормально, но две прокомментированные строки этого не делают, поэтому не могут получить доступ к оператору if.
Кто-то знает как я могу это понять?