2010-12-18 53 views
10

我正试图在一些审计领域设计Django的模型。如创建,创建,更新和更新。这四列将在不同应用程序中的所有模型中重复使用。django,什么是related_name?以及如何创建共享列以跨项目使用?

我的第一个问题是,有没有办法将这些列放在我的课程中,并且每次我需要它们时都可以将它们包含在我的课程中?

我的第二个问题,在下面的代码中related_name属性的重点是什么?没有它,代码将返回一个错误,并且该值在整个应用程序中必须是唯一的。有没有办法确保它始终独一无二?

class Poll(models.Model): 
    question=models.CharField(max_length=300) 
    start_poll_at=models.DateTimeField(null=True) 
    end_poll_at=models.DateTimeField(null=True) 
    is_active=models.BooleanField(default=True) 
    created_at=models.DateField("Created at") 
    created_by=models.ForeignKey(User, db_column="created_by", related_name="poll_user_created_by") 
    updated_at=models.DateTimeField("Updated at") 
    updated_by=models.ForeignKey(User, db_column="updated_by", null=True, related_name="poll_user_updated_by") 


class Choice(models.Model): 
    choice=models.CharField(max_length=200) 
    created_at=models.DateField("Created at") 
    created_by=models.ForeignKey(User, db_column="created_by", related_name="poll_user_created_by") 
    updated_at=models.DateTimeField("Updated at") 
    updated_by=models.ForeignKey(User, db_column="updated_by", null=True, related_name="poll_user_updated_by") 

感谢

回答

7

试试这个:

class AbstractClass(models.Model): 
    created_at=models.DateField("Created at") 
    created_by=models.ForeignKey(User, db_column="created_by", related_name="poll_user_created_by") 
    updated_at=models.DateTimeField("Updated at") 
    updated_by=models.ForeignKey(User, db_column="updated_by", null=True, related_name="poll_user_updated_by") 
    class Meta: 
     abstract = True 

,然后用它作为基地,为其他型号:

class Poll(AbstractClass): 
    question=models.CharField(max_length=300) 
    start_poll_at=models.DateTimeField(null=True) 
    end_poll_at=models.DateTimeField(null=True) 
    is_active=models.BooleanField(default=True) 

这是关于这个Django文档:http://docs.djangoproject.com/en/dev/topics/db/models/#abstract-base-classes

+1

For rela特德姓名:http://docs.djangoproject.com/en/dev/topics/db/models/#be-careful-with-related-name – crodjer 2010-12-18 17:31:31

相关问题