gpt4 book ai didi

python - django,related_name 是做什么用的?以及如何创建跨项目使用的共享列?

转载 作者:太空狗 更新时间:2023-10-29 18:33:06 27 4
gpt4 key购买 nike

我试图在 Django 中设计一个带有一些审计字段的模型。例如创建于、创建于、更新于和更新于。这四列将在不同应用程序的所有模型中重复出现。

我的第一个问题,是否有一种方法可以放置这些列,并且可以在我每次需要它们时将它们包含在我的类(class)中?

我的第二个问题,下面代码中的 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")

谢谢

最佳答案

试试这个:

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

关于python - django,related_name 是做什么用的?以及如何创建跨项目使用的共享列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4479103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com