我有一个Recipe
模型和Label
模型指的是前者,带有OneToOneField
. 我放置了管理器和natural_key
方法来使用 JSON 编码导出两个模型。
class RecipeManager(models.Manager):
def get_by_natural_key(self, name):
return self.get(name=name)
class Recipe(models.Model):
objects = RecipeManager()
name = models.CharField(max_length=255)
def natural_key(self):
return (self.name)
class LabelManager(models.Manager):
def get_by_natural_key(self, recipe):
return self.get(recipe=recipe)
class Label(models.Model):
objects = LabelManager()
recipe = models.OneToOneField(Recipe, primary_key=True)
name = models.CharField(max_length=255)
def natural_key(self):
return self.recipe.natural_key()
natural_key.dependencies = ['labels.recipe']
Label
我使用自然键导出查询集:
with open(l_filename, 'w') as l_file:
serialize('json',
Label.objects.all(),
indent=2,
use_natural_foreign_keys=True,
use_natural_primary_keys=True,
stream=l_file)
一切正常,但序列化的 JSON 对象没有Recipe
应该引用的建模字段。
[{"fields": {"name": null},"model": "labels.label"}]
从 1.7 开始,Django 文档没有给出任何特定于与自然键的一对一关系的提示。有什么建议吗?