Как отобразить метод свойства в виде сообщения в представлении на основе класса?

У меня есть метод свойства, определенный в моей модели django, который представляет собой id.

status_choice = [("Pending","Pending"), ("In progress", "In progress")  ,("Fixed","Fixed"),("Not Fixed","Not Fixed")]
class Bug(models.Model):
    name = models.CharField(max_length=200, blank= False, null= False)
    info = models.TextField()
    status = models.CharField(max_length=25, choices=status_choice, 
default="Pending")
    assigned_to = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete= 
                    models.CASCADE, related_name='assigned', null = True, blank=True)
    phn_number = PhoneNumberField()
    uploaded_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete= 
          models.CASCADE, related_name='user_name')
    created_at = models.DateTimeField(auto_now_add= True)
    updated_at = models.DateTimeField(blank= True, null = True)
    updated_by = models.CharField(max_length=20, blank= True)
    screeenshot = models.ImageField(upload_to='pics')


   @property
   def bug_id(self):
      bugid = "BUG{:03d}".format(self.id)
      return bugid

Мне нужно показать этот идентификатор в виде сообщения после создания объекта.

соответствующий файл views.py.

class BugUpload(LoginRequiredMixin, generic.CreateView):
    login_url = 'Login'
    model = Bug
    form_class = UploadForm
    template_name = 'upload.html'
    success_url = reverse_lazy('index')
    
    def form_valid(self, form):
    
        form.instance.uploaded_by = self.request.user
        return super().form_valid(form)

Предполагая, что ваш UploadForm является ModelForm, стоит отметить, что вызов .save() на нем вернет экземпляр вашей модели.

Если у вас есть:

class UploadForm(ModelForm):
    class Meta:
        model = Bug

Это означает, что ваш .save() будет возвращать экземпляр Bug

Теперь, когда все прошло хорошо и у вас есть ваш новый экземпляр, вы можете использовать фреймворк сообщений для создания сообщения об успехе для ваших пользователей:

def form_valid(self, form):
    instance = form.save(commit=True)
    my_message = f"Hello {instance.bug_id}"
    messages.add_message(self.request, messages.SUCCESS, my_messages)
    return instance
Вернуться на верх