簡體   English   中英

Django使用數據庫中的數據獲取表單

[英]Django get form with data from the database

我正在嘗試創建一個允許用戶編輯其個人資料數據的表單。 因此,我希望在用戶編輯表單時顯示數據庫中的最新數據。 以下是我到目前為止的情況:

# models.py
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    location = models.CharField(max_length=30, blank=True)
    birthdate = models.DateField(null=True, blank=True)

    def __str__(self):
        return self.user.username

# forms.py
class EditProfileForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ['location', 'birthdate']

# views.py
class EditProfileFormView(View):
    form_class = EditProfileForm
    template_name = 'forums/edit-profile.html'

    def get(self, request, username):

        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            raise Http404('The User "' + username + '" could not be found.')

        if (not request.user.is_authenticated):
            return HttpResponseForbidden()
        elif (user.id is not request.user.id):
            return HttpResponseForbidden()

        form = self.form_class(None)
        return render(request, self.template_name, {'form': form})

將表單設置為form_class(None)是為了給我一個空表單,但是在同一個地方丟棄user.profile會給我一個錯誤'Profile'對象沒有屬性'get'

嘗試使用實例填充表單

form = self.form_class(instance=user.profile)

注意:使用標准UpdateView可能會更容易

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM