Django Multiple ForeignKey和相同的相关名称

时间:2014-03-18 05:54:36

标签: python django

我想对许多模型使用user foreignkey。我不能使用这种方法。是否有可能为所有外键提供通用名称。我想在每个模板中访问x.createdx.updated

class Model_one(models.Model):
    --
    --
    created = models.ForeignKey(User,related_name="created")
    updated = models.ForeignKey(User,related_name="updated")


class Model_two(models.Model):
    --
    --
    created = models.ForeignKey(User,related_name="created")
    updated = models.ForeignKey(User,related_name="updated")


class Model_three(models.Model):
    --
    --
    created = models.ForeignKey(User,related_name="created")
    updated = models.ForeignKey(User,related_name="updated")

1 个答案:

答案 0 :(得分:2)

为了概括你的方法,你可以做类似的事情:

class BaseModel(models.Model):
    created = models.ForeignKey(User,related_name="created_%(class)s_objects")
    updated = models.ForeignKey(User,related_name="updated_%(class)s_objects")

    class Meta:
        abstract = True


class ModelOne(BaseModel):
    # your model one fields


class ModelTwo(BaseModel):
    # your model two fields

用这种方法你

  • 不需要明确定义所有模型上的相同字段,因为您从BaseModel继承。

  • special syntax自动创建与正确的类名称的向后关系。因此user.created_modelone_objects.all()将为您提供用户创建的所有对象。

相关问题