Как отобразить метод свойства в виде сообщения в представлении на основе класса?
У меня есть метод свойства, определенный в моей модели 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