gpt4 book ai didi

django - Django模型:模型中只允许一个条目?

转载 作者:行者123 更新时间:2023-12-03 13:47:21 24 4
gpt4 key购买 nike

我想通过管理界面来配置一些Django全局设置。

为此,我决定将它们设置为数据库字段,而不是settings.py

这些是我关心的设置:

 class ManagementEmail(models.Model):
librarian_email = models.EmailField()
intro_text = models.CharField(max_length=1000)
signoff_text = models.CharField(max_length=1000)

这些是一次性的全局设置,因此我只想在系统中 float 一个 librarian_emailintro_text等。

有没有一种方法可以阻止管理员用户在此处添加新记录 而又不阻止他们编辑现有记录

我想我可以通过为此模型编写自定义管理模板来做到这一点,但是我想知道是否有一种更简洁的方法来配置它。

例如,我可以使用 class以外的其他东西吗?

谢谢!

最佳答案

请参阅this question on "keep[ing] settings in database",答案似乎是django-dbsettings

更新资料

想到另一个选择:您可以创建以下模型:

from django.contrib.sites.models import Site

class ManagementEmail(models.Model):
site = models.OneToOneField(Site)
librarian_email = models.EmailField()
intro_text = models.CharField(max_length=1000)
signoff_text = models.CharField(max_length=1000)

由于存在 OneToOneField字段,每个站点只能有一个ManagementEmail记录。然后,只需确保您正在使用网站,然后就可以拉出设置了:
from django.contrib.sites.models import Site
managementemail = Site.objects.get_current().managementemail

请注意,其他人都告诉你的是真的。如果您的目标是存储设置,则最好将它们作为字段逐个添加到模型中。随着时间的推移添加设置将是一件令人头疼的事情:您必须将字段添加到模型中,更新数据库结构,并修改调用该设置的代码。

这就是为什么我建议使用上面提到的django应用程序的原因,因为它完全可以满足您的要求-提供用户可编辑的设置-而无需您进行任何不必要的额外工作。

关于django - Django模型:模型中只允许一个条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4888159/

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