使用django-import-export反转外键

时间:2015-07-03 07:27:46

标签: python django django-models django-admin django-import-export

我有以下模型,其中每个项目都有一组特定的权限。

class Bank(models.Model):
    name = models.CharField(max_length=255, unique=True)

    def __unicode__(self):
        return self.name


class Project(models.Model):
    name = models.CharField(max_length=255, null=False)
    launch_date = models.CharField(max_length=20, null=False)
    possession_date = models.CharField(max_length=20, null=False)
    bank = models.ManyToManyField('Bank')

    def __unicode__(self):
        return self.name

class Permissions(models.Model):
    name = models.CharField(max_length=255)

    def __unicode__(self):
        return self.name


class ProjectPermission(models.Model):
    project = models.ForeignKey('Project')
    permission = models.ForeignKey('Permissions')
    value = models.CharField(max_length=255)

    def __unicode__(self):
        return self.project.name

我想将数据从csv导入/导出到此模型。如何在资源管理子类中引用项目模型的权限?

我可以通过

访问权限
project.projectpermission_set.all()

如果project是Project对象。

2 个答案:

答案 0 :(得分:0)

回答你的问题

  

如何从项目模型中引用权限?

如果要对使用权限的Project对象进行查询,请使用:

Project.objects.filter(projectpermission__permissions__name='whatevervalue').

Viceversa,查询对项目进行过滤的权限对象:

Permissions.objects.filter(projectpermission__project__name='whatever')

有关如何更方便地命名关系的更多信息,请参阅this

答案 1 :(得分:0)

我重写了ModelResources的after_import_row方法来解析和创建与反向相关的模型。就我而言,效果很好。