Python Django多个外键和相同的相关名称
我想使用Python Django多个外键和相同的相关名称,python,django,Python,Django,我想使用userforeignkey来创建许多模型。我不能用这种方法。是为所有外键指定通用名称的任何可能方法。我想访问每个模板中的x.created或x.updated class Model_one(models.Model): -- -- created = models.ForeignKey(User,related_name="created") updated = models.ForeignKey(User,related_name="updated"
user
foreignkey来创建许多模型。我不能用这种方法。是为所有外键指定通用名称的任何可能方法。我想访问每个模板中的x.created
或x.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")
为了推广您的方法,您可以这样做:
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
- 自动创建具有正确类名的向后关系。因此,
将为您提供用户创建的所有对象user.created\u modelone\u objects.all()
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
- 自动创建具有正确类名的向后关系。因此,
将为您提供用户创建的所有对象user.created\u modelone\u objects.all()
相关\u名称
是多余的。如果你摆脱了它,你可能会按照你想要的方式使用它。你可以在没有“related_name”的情况下访问x.created或x.updated。@ErDmKo需要相关名称,如果没有相关名称,则不允许对同一表使用多个foreignKey。是吗?我不确定我是否理解这个问题。使用与字段同名的相关\u名称
是多余的。如果你摆脱了它,你可能会按照你想要的方式使用它。你可以在没有“related_name”的情况下访问x.created或x.updated。@ErDmKo需要相关名称,如果没有相关名称,则不允许对同一表使用多个foreignKey。是吗?