我在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模型应该是关联到一个数据库中的表,这样模型中的每个领域实际上是在表中该模型的字段。
为了达到你想要做什么,你需要创建第二个模型,这将是要存储的对象。
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中我们使用的模型,每个模型对应于特定的表。
为把对象作为示范田,你需要先序列化,然后你可以将它保存这样的:
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