2016-03-24 6 views
0

Ben django öğreniyorum ve bir soru sormak istiyorum, Kullanıcıların giriş ve tıklama göndermek için soran basit bir form var, bir form gönderildiğinde yönetici bir e-posta alır. Yöneticinin formu onaylaması/reddetmesini ve kaydetmesini isterim. Onaylama/reddetme seçiminin yalnızca yönetici sitesi için görünmesini sağlamaya çalışıyorum. Hem yönetici hem de kullanıcı için her ikisi için de gösterilmiyor.Django formları, yalnızca yönetici sitesinde değil, görünümde "onaylanmış" bir alana sahiptir.

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

Benim models.py kodudur:

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 

benim forms.py kodudur: benim form bu alanları devralan da ondan model.CharField gösterir

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

. Umarım mantıklıyım, aksi halde daha iyi nasıl açıklayacağımı bilmezdim. Şimdiden teşekkürler.

+0

exclude = ("status",) 'ı denedim, ancak hem yönetici hem de formdan kaldırır. – FrankBud

+0

Sorunuzda 'forms.py' ve' admin.py' alakalı kodunuzu da ekleyin. –

cevap

0

Formunuz için model formu kullandığınızı varsayarak forms.py. Model için Meta'nın 'alanlardaki' durumu içermediğinden emin olun.

örn.

modeliniz models.py içinde ExampleModel ise:

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) 

Ve forms.py geçerli:

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

iki alana sahip yönetici bir form ve bir form çıkartır Sadece kullanıcı giriş alanı ile kullanıcı alanı.

+0

Teşekkürler, ama bu işe yaramadı. – FrankBud

+0

Model meta formundaki durum alanını tekrar hariç tutmayı deneyin ve sonra admin.py uygulamasında istediğiniz alanları açıkça adlandırın. Örneğin. class ExampleModelAdmin (admin.ModelAdmin): fields = ('status', ...) ve kaydedin. –

+0

Ayrıca işe yaramadı. Model admin 'SignUpForm' içinde 'u' Key 'durumunun bulunmadığından şikayet ediyor' ' – FrankBud

İlgili konular