如何保存在Django数据库对象

问题描述 投票:-2回答:2

我在Django创建模型,我需要一个字段保存对象,如保存一个字符串的Django有CharField,我有API,返回我的对象​​,我想建立一个模型来保存这个对象。我检查Django模型字段,但没有发现任何字段保存对象。

是否有任何字段保存在Django数据库中的对象?

models.朋友

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 ?
django python-3.x django-models
2个回答
1
投票

在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()

上面的代码是从the documentation,你一定要了解更多详情阅读拍摄。

现在回到你的问题,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对象的ID。

所以基本上,就像我们为我们在一个数据库中的每个实体表,Django中我们使用的模型,每个模型对应于特定的表。


0
投票

为把对象作为示范田,你需要先序列化,然后你可以将它保存这样的:

models.朋友:

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

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

views.朋友:

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.

更多关于序列化,请访问docs

© www.soinside.com 2019 - 2024. All rights reserved.