我有一个Django应用程序,用于与大约600个项目,1000个组织进行人道主义援助协调。
用户将包括从事国际发展的IT专业人士,以及使用智能手机并且英语为第二或第三语言的农村地区的人。
我们需要一种方法让用户告诉我们数据错误的位置并建议更正 - 这是一个 具有可怕拼写和大量陈旧联系的遗留数据库 细节。
我希望看到每个模型的“建议更改”页面,用户可以在其中提交建议,然后只需单击即可由管理员用户批准该数据。目前我正在开发一个涉及django REST框架的解决方案,保存序列化数据和管理员用户的URL以验证和提交,而不是实际更改实例。
有人可以推荐一种方法来实现这个,或者更好的解决方案吗?
编辑:这是我想要更改的主表的结构。其中一个复杂因素是涉及的关系数量。
class Project(models.Model):
name = models.CharField(_('name'), max_length=256)
description = models.TextField(null=True, blank=True, verbose_name=_("Project Description"))#, config_name='awesome_ckeditor')
startdate = models.DateField(null=True, blank=True, verbose_name="Start date")
enddate = models.DateField(null=True, blank=True, verbose_name="End date")
notes = models.TextField(null=True, blank=True)
status = models.ForeignKey('ProjectStatus', null=True, verbose_name="Status")
projecttype = models.ForeignKey('ProjectType', null=True, blank=True)
person = models.ManyToManyField(Person, through='ProjectPerson', null=True, blank=True)
sector = models.ManyToManyField(
'nhdb.PropertyTag', null=True, blank=True, related_name="project_sector",
limit_choices_to={'path__startswith': "INV."})
activity = models.ManyToManyField(
'nhdb.PropertyTag', null=True, blank=True, related_name="project_activity",
limit_choices_to={'path__startswith': "ACT."})
beneficiary = models.ManyToManyField(
'nhdb.PropertyTag', null=True, blank=True, related_name="project_beneficiary",
limit_choices_to={'path__startswith': "BEN."})
place = models.ManyToManyField("geo.AdminArea", through='ProjectPlace', null=True, blank=True)
organization = models.ManyToManyField(Organization, through='ProjectOrganization', null=True, blank=True)
stafffulltime = models.IntegerField(null=True, verbose_name=_('Full time staff'))
staffparttime = models.IntegerField(null=True, verbose_name=_('Part time staff'))
答案 0 :(得分:0)
您可以将此信息转到一个名为advice的单独数据库表,该表与建议更新的对象具有外键关系。
如果您不想冒未经授权的人向您的数据库添加任何内容的风险,您甚至可以将电子邮件发送到电子邮件链,通知管理员。
如果这不起作用,您可以将文本文件保存在服务器某处的编辑目录中,等待管理员使用。可能有一个单独的RabbitMQ设置来自动管理这个工作负载等......
基本上你有很多选择。