2016-08-17 115 views
0

Django的1.10外键使迁移

我只是想以统一的公共领域中的一般模型,然后从它继承。我不知道我还能如何坚持DRY原则。但我无法进行迁移。你能在这里给我一个建议吗?

class GeneralModel(models.Model): 
    created_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name="created_by") 

    class Meta: 
     abstract = True 

class Image(GeneralModel): 
    ... 

class Masterphoto(GeneralModel): 
    ... 

回溯

python manage.py makemigrations 
SystemCheckError: System check identified some issues: 

ERRORS: 
image.Image.created_by: (fields.E304) Reverse accessor for 'Image.created_by' clashes with reverse accessor for 'Masterphoto.created_by'. 
    HINT: Add or change a related_name argument to the definition for 'Image.created_by' or 'Masterphoto.created_by'. 
image.Image.created_by: (fields.E305) Reverse query name for 'Image.created_by' clashes with reverse query name for 'Masterphoto.created_by'. 
    HINT: Add or change a related_name argument to the definition for 'Image.created_by' or 'Masterphoto.created_by'. 
masterphoto.Masterphoto.created_by: (fields.E304) Reverse accessor for 'Masterphoto.created_by' clashes with reverse accessor for 'Image.created_by'. 
    HINT: Add or change a related_name argument to the definition for 'Masterphoto.created_by' or 'Image.created_by'. 
masterphoto.Masterphoto.created_by: (fields.E305) Reverse query name for 'Masterphoto.created_by' clashes with reverse query name for 'Image.created_by'. 
    HINT: Add or change a related_name argument to the definition for 'Masterphoto.created_by' or 'Image.created_by'. 

回答

0

这不是什么关系迁移。

相关名称必须是唯一的。 model inheritance docs解释在这种情况下要做什么;您可以使用'%(app_label)s''%(class)s'自动将相关名称插入生成的值中。

+0

非常感谢。这正是我需要的。 – Michael