我正在django中创建模型,我需要一个字段来保存对象,例如,保存字符串django具有CharField,我具有返回我对象的api,我想创建一个模型来保存此对象。我检查了django模型字段,但没有找到任何保存对象的字段。
是否有任何字段可将对象保存在Django数据库中?
models.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 ?
答案 0 :(得分: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
的{{1}}模型里面,其实是你正在寻找(它实际上是另一个对象的引用,或外国的那种“对象”字段密钥)。
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)
的{{1}}对象,并将其保存到数据库中。接着,我创建了一个Musician
对象,这需要对象musician
到它的Album
字段中,并将其保存到数据库中。
在数据库中,我们的相册条目包含一个musician
字段,其值是上面创建的artist
对象的ID。
所以基本上,就像我们为数据库中的每个实体创建表一样,在Django中,我们使用模型,并且每个模型都对应一个特定的表。
答案 1 :(得分:0)
要将对象保存为模型字段,您需要先对其进行序列化,然后可以像这样保存它:
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.
有关序列化程序的更多信息,请访问docs