Предполагается, что модель в Django соотносится с таблицей в базе данных, так что каждое поле в модели фактически будет полем в таблице для этой модели.
Для достижения того, что вы пытаетесьДля этого вам нужно создать вторую модель, которая будет тем объектом, который вы хотите сохранить.
from django.db import models
class Musician(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
instrument = models.CharField(max_length=100)
class Album(models.Model):
artist = models.ForeignKey(Musician, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
release_date = models.DateField()
num_stars = models.IntegerField()
Приведенный выше код взят из документации , которую вы обязательно должны прочитатьдля более подробной информации.
Теперь вернемся к вашему вопросу. Поле artist
внутри модели Album
на самом деле является тем типом поля "объект", которое вы ищете (на самом деле это ссылка на другой объект,или внешний ключ).
musician = Musician.objects.create(
first_name="My", last_name="Name", instrument="guitar")
album = Album.objects.create(
name="Great Album", release_date=date, num_stars=5, artist=musician)
Как видите, я создал объект Musician
с именем musician
и сохранил его в базе данных.Затем я создал объект Album
, который берет объект musician
в его поле artist
и сохраняет его в базе данных.
В базе данных наша запись альбома содержит поле artist_id
, значение которого является идентификатором нашего musician
объекта, созданного выше.
Таким образом, в основном, так же, как мы создаем таблицы для каждой сущности в базе данных, в Django мы используем модели, и каждая модель соответствуетконкретная таблица.