Создайте новую строку модели с полями, которые являются внешними ключами
Мне кажется, что способ, которым я создаю экземпляры своих моделей, неправильный/содержит слишком много шагов.
models.py:
class Library(models.Model):
name=models.CharField(max_length=40)
address=models.CharField(max_length=30)
postcode=models.CharField(max_length=30)
class Bookshelf(models.Model):
number=models.IntegerField(default=0)
name=models.CharField(max_length=30)
library=models.ForeignKey(Library, on_delete=models.CASCADE)
Я создал библиотеку, выполнив следующие действия:
library = Library(name="town centre", address="main street", postcode = "N15"
library.save()
Теперь я хочу создать книжную полку для этой библиотеки, но я не уверен, как указать библиотеку, к которой она принадлежит.
shelfie = Bookshelf(number=5, name="fiction", library = ???)
Я могу заставить его работать, выполнив следующие действия:
selected_library = Library.objects.get(name="town centre")
shelfie = Bookshelf(number=5, name="fiction", library = selected_library)
Но правильно ли это? Когда у меня есть представление, которому нужно создать экземпляр чего-то, имеющего множество отношений типа "внешний ключ/множество ко многим", я заканчиваю тем, что назначаю переменные запросам базы данных различных моделей, чтобы использовать их для создания одной вещи
Обычно представление использует основной ключ библиотеки, вы можете использовать это, чтобы назначить его library_id:
library_id = 14
shelfie = Bookshelf.objects.create(number=5, name="fiction", library_id=library_id)
Если вы создаете Library, вы также можете использовать это для создания Bookshelf:
library = Library.objects.create(name="town centre", address="main street", postcode="N15")
shelfie = Bookshelf.objects.create(number=5, name="fiction", library=library)