2010-12-18 57 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

相關問題