如何在django中使用编辑按钮切换具有预填充内容的表单

如何在django中使用编辑按钮切换具有预填充内容的表单,django,forms,crud,Django,Forms,Crud,我有一个表格,用户可以填写留下评论。在同一页面上,将显示评论,其中包含编辑评论的按钮。单击“编辑”按钮时,我希望表单预先填充适当的审阅数据,以便在数据库中对其进行编辑和更新 模型 class Clinic(models.Model): practitioner = models.OneToOneField(User, on_delete=models.CASCADE) lat = models.FloatField(null=True, blank=True) lng =

我有一个表格,用户可以填写留下评论。在同一页面上,将显示评论,其中包含编辑评论的按钮。单击“编辑”按钮时,我希望表单预先填充适当的审阅数据,以便在数据库中对其进行编辑和更新

模型

class Clinic(models.Model):
    practitioner = models.OneToOneField(User, on_delete=models.CASCADE)
    lat = models.FloatField(null=True, blank=True)
    lng = models.FloatField(null=True, blank=True)
    web = models.CharField(null=True, blank=True, max_length=128)
    name = models.CharField(max_length=128, )
    phone = PhoneNumberField()
    description = models.TextField(max_length=5000)
    street = models.CharField(max_length=128, )
    city = models.CharField(max_length=128, )

    def __str__(self):
        return self.name

    def save(self):
        super().save()


class Reviews(models.Model):
    title = models.CharField(max_length=128)
    body = models.TextField(max_length=500)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    clinic = models.ForeignKey(Clinic,
                               null=True,
                               blank=True,
                               on_delete=models.CASCADE)
形式

看法

截图

class ReviewForm(forms.ModelForm):
    class Meta:
        model = Reviews
        fields = (
            'title',
            'body',
        )
def clinic_profile(request, clinic_id):

    clinic = Clinic.objects.filter(pk=clinic_id)
    form = ReviewForm(request.POST)
    if request.method == 'POST':
        if form.is_valid():
            r_clinic = Clinic.objects.get(pk=clinic_id)
            title = form.cleaned_data.get("title")
            body = form.cleaned_data.get("body")
            review = Reviews(title=title,
                             body=body,
                             author=request.user,
                             clinic=r_clinic)
            review.save()
            messages.success(request, f'Thank you for leaving a review!')

    clinic_reviews = Reviews.objects.filter(clinic=clinic_id)

    latlng = {
        "lat": clinic[0].lat,
        "lng": clinic[0].lng,
        "name": clinic[0].name
    }

    def get_mods():
        profile = Profile.objects.filter(user=Clinic.objects.get(
            pk=clinic_id).practitioner)
        mods = profile[0].mods.all().values('name') if profile else []

        mods = [(q['name']) for q in mods]
        return mods

    return render(
        request, 'clinic_profile.html', {
            'clinic': clinic,
            'mods': get_mods,
            'latlng': latlng,
            'api_key': api_key,
            'reviews': clinic_reviews,
            'form': form,
        })