Как удалить детали, связанные с одним полем, в Djang Rest Framework?
Здравствуйте, рассмотрим следующий простой сценарий:
class User(models.Model):
     email = ...
     fname = ...
     lname = ...
class UserPreferences(models.Model):
     user = models.OneToOneField(User, to_field="email", ...)
     preferences = ...
 Теперь таблица UserPreferences в db содержит id, preferences, user_id.
Я хочу получить предпочтения пользователя по электронной почте.
Я хочу использовать RetrieveAPIView.
Как это сделать?
 Какова роль to_field, если он все равно хранит id пользователя? 
Я попробовал следующее:
class UserPreferencesRetrieveView(generics.RetrieveAPIView):
    serializer_class = UserPreferencesSerializer
    queryset = UserPreferences.objects.all()
    lookup_field = "email"
Я получил ошибку:
Cannot resolve keyword 'email' into field. Choices are: id, preferences, user, user_id
                
 Чтобы ответить на ваш вопрос, вы должны использовать метод get_queryset с вашим URL kwargs:
class UserPreferencesRetrieveView(generics.RetrieveAPIView):
    serializer_class = UserPreferencesSerializer
    def get_queryset(self):
        email = self.kwargs['email']
        return UserPreferences.objects.filter(user__email=email)
или
Если вы хотите использовать lookup_field, то вам следует сделать что-то вроде этого lookup_field = 'user__email' в наборе представлений:
class UserPreferencesRetrieveView(generics.RetrieveAPIView):
    serializer_class = UserPreferencesSerializer
    queryset = UserPreferences.objects.all()
    lookup_field = 'user__email'
 и использование to_field
Поле связанного объекта, к которому относится отношение. По умолчанию Django использует первичный ключ связанного объекта. Если вы ссылаетесь на другое поле, то оно должно иметь значение unique=True. подробнее docs