Pra*_*aur 6 django django-serializer
我有一个Person
存储人员详细信息的模型.
class Person(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
birthdate = models.DateField()
Run Code Online (Sandbox Code Playgroud)
我也有模特PersonLogs
来存储人的活动日志.
class PersonLogs(models.Model):
person = models.ForeignKey(Person)
time = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
我正在使用Django Serializer将Person对象作为响应返回JSON格式.
from django.core import serializers
data = serializers.serialize("json", Person.objects.all())
Run Code Online (Sandbox Code Playgroud)
输出:
{
"model": "store.person",
"fields": {
"first_name": "Douglas",
"last_name": "Adams",
"birth_date": "1952-03-11",
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想回到PersonLogs
JSON回复.
预期产出:
{
"model": "store.person",
"fields": {
"first_name": "Douglas",
"last_name": "Adams",
"birth_date": "1952-03-11",
"personlogs": [['2015-06-09 15:42:58.861540'], ['2014-06-09 15:42:58.861540'], [2013-06-09 15:42:58.861540]]
}
}
Run Code Online (Sandbox Code Playgroud)
我查看了官方文档,但我没有得到任何帮助.链接
看来你想Person
以反向ForeignKey
关系进行序列化。Django 的序列化器不支持这一点。您必须使用 Django REST Framework,例如,正如@DanielRoseman的评论中指出的那样。
但如果你能妥协,下面的解决方案就会起作用。
class PersonManager(models.Manager):
def get_by_natural_key(self, first_name, last_name, birthdate):
return self.get(first_name=first_name, last_name=last_name, birthdate=birthdate)
class Person(models.Model):
objects = PersonManager()
# other fields
...
Run Code Online (Sandbox Code Playgroud)
现在,您不必进行序列化Person
,而是必须序列化PersonLogs
,这将输出以下内容:
{
"pk": 1,
"model": "models.PersonLogs",
"fields": {
"time": "2015-06-09 15:42:58.861540",
"person": ["Douglas", "Adams", "1952-03-11"]
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2864 次 |
最近记录: |