Django表格已获得批准"字段仅在管理网站上提供,而不是视图?

时间:2016-03-24 03:47:04

标签: django forms

我正在学习django,想问一个问题, 我有一个简单的表单,要求用户输入并单击提交,管理员会在提交表单时收到电子邮件。我想让管理员批准/拒绝表单并保存。 我只是为管理网站显示批准/拒绝选择而苦苦挣扎。它为管理员和用户提供了论文,或者两者都没有显示。

request_status = (
        ('select', 'Select'),
        ('Approved', 'Approved'),
        ('Denied', 'Denied'),
        )
status = models.CharField(max_length=20, choices=request_status, default='select')

我的models.py代码是:

class SignUp(models.Model):
    ENV_CHOICE = (
        ('select', 'Select'),
        ('Production', 'Production'),
        ('Lab', 'Lab'),
        ('EBC_env', 'EBC_env'),
        ('Los_Angles', 'Los Angles'),
        )
    request_status = (
        ('select', 'Select'),
        ('Approved', 'Approved'),
        ('Denied', 'Denied'),
        ('Added_comment', 'Added_comment'),
        )
    email = models.EmailField()
    full_name = models.CharField(max_length=120, blank=True, null=True)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)
    what_is_the_change = models.TextField(max_length=250, null=True)
    environment = models.CharField(max_length=10, choices=ENV_CHOICE,  default='select')
    models.DateTimeField(default=timezone.now)
    status = models.CharField(max_length=20, choices=request_status, default='select', blank=True)

    def __unicode__(self):
        return self.email

我的forms.py代码是:

class SignUpForm(forms.ModelForm):
    class Meta:
        model = SignUp
        fields = ('full_name', 'email', 'environment', 'what_is_the_change', 'change_date_and_time')

它显示了model.CharField,因为我的表单继承了这些字段。希望我有意义,否则我不知道如何更好地解释它。提前谢谢。

1 个答案:

答案 0 :(得分:0)

在您的forms.py中,假设您正在为模型使用modelform。确保模型的Meta不包含“字段”中的状态。

e.g。

如果您的模型是models.py中的ExampleModel:

class ExampleModel(models.Model):
    request_status = (
        ('select', 'Select'),
        ('Approved', 'Approved'),
        ('Denied', 'Denied'),
        )
    status = models.CharField(max_length=20, choices=request_status, default='select')
    user_input = models.CharField(max_length=200)

你的forms.py是:

class ExampleModelForm(forms.ModelForm):
    class Meta:
        model = ExampleModel
        fields = ('user_input',) #note the abscence of status

应该在管理中使用两个字段生成表单,并在用户区域中仅使用用户输入字段生成表单。