如何在基于类的视图中显示属性方法作为消息?



我在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

我想要的是,我需要在创建对象后显示这个id作为消息。

对应的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)

假设您的UploadFormModelForm,值得注意的是,在它上调用.save()将返回您的模型的实例。

如果你有:

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

这意味着您的.save()将返回一个Bug的实例

现在一切顺利,你有了你的新实例,你可以使用django的消息框架为你的用户构建成功消息:

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

最新更新