Как сохранить объект в базе данных Django - PullRequest
0 голосов
/ 02 февраля 2019

Я создаю модели в django, мне нужно поле для сохранения объекта, например, для сохранения строки в django есть CharField, у меня есть api, который возвращает мне объект, и я хочу создать модель для сохраненияэтот объект.Я проверил поля моделей django, но не нашел ни одного поля для сохранения объекта.

Есть ли поле для сохранения объекта в базе данных django?

моделей.py

class UnusedResources(models.Model):
    field1 = models.CharField(max_length=20)
    field2 = models.CharField(max_length=70)
    field3 = models.CharField(max_length=70)
    saveobject = Field to save an object ?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Предполагается, что модель в 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 мы используем модели, и каждая модель соответствуетконкретная таблица.

0 голосов
/ 02 февраля 2019

Чтобы сохранить объект в качестве поля модели, необходимо сначала сериализовать его, а затем сохранить его следующим образом:

models.py:

class MyModel(models.Model):
   text = models.CharField(max_length=255)

class UnusedResources(models.Model):
    # other fields 
    obj = models.TextField()

views.py:

from django.core import serializers

def basic_func():            
    obj = MyModel.objects.create(text="some text...") # create object of MyModel.        
    s_obj = serializers.serialize("json", [obj]) # convert object to json format          
    obj2 = UnusedResources.objects.create(obj=s_obj) # save it to other model         
    print obj2.obj # accessing the model.

для получения дополнительной информации о сериализаторах, пожалуйста, посетите документы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...