CRUD应用程序基于Django中的请求

时间:2015-02-28 12:40:15

标签: django

我正在尝试根据"请求"来建立一个crud应用程序。用户必须创建请求才能创建/编辑/删除。我会描述一个像这样的简单例子

class Employee(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    dob = models.DateField()
    # etc. 

现在我想通过添加名为" Approved"的两个字段来控制员工的创建。和"批准的"。

现在编辑的问题。我想用OLD和NEW值创建一个请求。当管理员批准然后将新值应用于实例时,否则从系统中删除新值。

到目前为止,对我来说最好的解决方案是使用Django的ContentType框架。像这样。

ACTIONS = (
            ('C', 'Create'),
            ('D', 'Delete'),
            ('U', 'Update')
        )

class Requester(models.Model):

    """
    This is the base of all the requests
    """
    initiated_by = models.ForeignKey('auth.User', verbose_name=_('Initiated By'), related_name="initiated_by")
    reviewed_by = models.ForeignKey('auth.User', verbose_name=_('Reviewd By'), blank=True, null=True, related_name="reviewed_by")
    content_type = models.ForeignKey('contenttypes.ContentType')
    item_id = models.IntegerField(blank=True, null=True)
    action = models.CharField(max_length=1, choices=ACTIONS)
    created_at = models.DateTimeField(_('Created At'), auto_now_add=True)
    reviewed_at = models.DateTimeField(_('Reviewed At'), auto_now=True)

这适用于我的创建和删除请求。但是,更新请求必须临时保存新值。除了创建新模型(例如员工)并将新值放入其中之外,我无法找到方法。然后将新值中的值替换为旧值。最后删除新的。这将导致ID为员工ID = 5的问题,下一个可能是7,基于"数据库中的临时保存实例"

我需要一个解决方案,在没有更多数据复制的情况下不应用更新。

0 个答案:

没有答案