Я делаю операцию набора запросов update_or_create, которая внутренне использует операцию получения набора запросов.Я прочитал документацию по методу набора запросов update_or_create, но у меня возникли некоторые трудности с пониманием частей, относящихся к внешним ключам и использованию объектов в качестве kwargs.
Рассмотрим пример, в котором у меня есть модели Book и Chapter, иЯ делаю что-то вроде этого:
book = Book.objects.get(...)
kwargs = {'book': book, 'name': 'Chapter 3'}
defaults = {'text': '...'}
Chapter.objects.update_or_create(defaults=defaults, **kwargs)
Теперь kwargs будут использоваться в методе 'get', чтобы проверить, существует ли эта глава.Но так как книга - это объект, как Джанго узнает, существует ли глава с «совпадающей» книгой?Проверяет ли все поля объекта книги совпадение?Проверяет ли это только уникальное поле?Только первичный ключ книги?Если у меня есть две книги с одинаковыми полями, но с разными первичными ключами, могут ли они совпадать?Это хорошая практика, чтобы использовать объект в kwargs таким образом, или я рискую получить проблемы с ошибкой целостности?Спасибо.