繁体   English   中英

关于自然键错误的django序列化

[英]django serialization on natural key error

我有一个django模型,我使用自然键:

class AcademicProgramsManager(models.Manager):
    def get_by_natural_key(self, acad_program_id, program_title, required_credits):
        return self.get(acad_program_id = acad_program_id, program_title = program_title, required_credits = required_credits)

class AcademicPrograms(models.Model):

    objects = AcademicProgramsManager()
    acad_program_id = models.IntegerField(primary_key=True)
    acad_program_category = models.ForeignKey(AcademicProgramCategories)
    acad_program_type = models.ForeignKey(AcademicProgramTypes)
    acad_program_code = models.CharField(max_length=25)
    program_title = models.CharField(max_length=64)
    required_credits = models.IntegerField()
    min_gpa = models.FloatField()
    description = models.CharField(max_length=1000)

    def natural_key(self):
    return (self.acad_program_id, self.program_title, self.required_credits)

class StudentAcademicPrograms(models.Model):
    student = models.ForeignKey(Students)
    academic_program = models.ForeignKey(AcademicPrograms)
    credits_completed = models.IntegerField()
    academic_program_gpa = models.FloatField()
    primary_program = models.BooleanField()

    def __str__(self):
    return self.credits_completed

当我尝试使用以下命令序列化StudentAcademicPrograms时,它会抛出一个错误。

>>> with open("datafile.json","w") as out:...     
        serialize("json", StudentAcademicPrograms.objects.all(), indent=2, use_natural_foreign_keys=True, use_natural_primary_keys=True)
    ... 
    Traceback (most recent call last):
      File "<console>", line 2, in <module>
      File "/home/abhishek/projects/texascompletes/local/lib/python2.7/site-packages/django/core/serializers/__init__.py", line 122, in serialize
        s.serialize(queryset, **options)
      File "/home/abhishek/projects/texascompletes/local/lib/python2.7/site-packages/django/core/serializers/base.py", line 58, in serialize
        self.end_object(obj)
      File "/home/abhishek/projects/texascompletes/local/lib/python2.7/site-packages/django/core/serializers/json.py", line 52, in end_object
        cls=DjangoJSONEncoder, **self.json_kwargs)
      File "/usr/lib/python2.7/json/__init__.py", line 186, in dump
        default=default, sort_keys=sort_keys, **kw).iterencode(obj)
    TypeError: __init__() got an unexpected keyword argument 'use_natural_foreign_keys'

我哪里错了?

根据文档use_natural_keys被“ use_natural_keys ”为Django 1.7版本中的use_natural_foreign_keysuse_natural_primary_keys ,目前还不是稳定版本。

您可以升级到django开发版本或使用use_natural_keys关键字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM