2014-02-19 3 views
0

У меня есть Джанго модель:Работа с FormView Джанго

class ProjectFile(models.Model): 

    TYPES = (
     (1, "Public"), 
     (2, "In Project"), 
     (3, "Specific") 
    ) 

    project = models.ForeignKey(Project) 
    file = models.FileField(upload_to="files/") 
    type = models.SmallIntegerField(choices=TYPES) 

    created_by = models.ForeignKey(User) 
    created_at = models.DateTimeField(auto_now_add=True) 
    updated_at = models.DateTimeField(auto_now=True) 

    def __unicode__(self): 
     return self.file.name + " - " + self.project.name 

    def is_downloadable(self, user): 
     if self.file.project.type == 1: 
      return True 

     return False 

и формы:

class FileUploadForm(forms.ModelForm): 

    class Meta: 
     model = ProjectFile 
     exclude = ['created_by', 'created_at', 'updated_at', 'project'] 

мой взгляд класс (FormView) является:

class UploadFileView(FormView): 
    form_class = FileUploadForm 
    template_name = "project/file_upload.html" 

Итак, мой вопрос сейчас : Как добавить данные в исключенные поля в моем views.py для UploadFileForm. Например, created_by должна быть равна request.user

+0

Возможный дубликат http://stackoverflow.com/q/7147059/400691 – meshy

ответ

1

Если ваш вид предназначен для создания ProjectFile, я бы порекомендовал вам использовать CreateView и переопределить метод form_valid.

from django.views.generic import CreateView 

class UploadFileView(CreateView): 
    form_class = FileUploadForm 
    template_name = 'project/file_upload.html' 
    def form_valid(self, form): 
     form.instance.user = self.request.user 
     return super(UploadFileView, self).form_valid(form) 

Вы все еще могли бы переопределить тот же метод, даже если вы хотите использовать FormView.

Смежные вопросы