Issue
I have a instance Form that is showing the user his Profile Data, the user can update some of his profile settings by modifying the input and clicking the update button.
But I don't want the user to be allowed to change all the profile data, such as the subscriptions Charfields Data. How can I do that?
models.py
class Profile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
telegramusername = models.CharField(max_length=50, default=None)
subscription = models.CharField(max_length=50, default=None)
numberofaccount = models.CharField(max_length=50, default=None)
def __str__(self):
return self.telegramusername
forms.py
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
labels = {
"telegramusername": "Telegram Username",
"subscription": "Subscription Plan",
"numberofaccount": "Number of MT5 Account"
}
fields = ["telegramusername", "subscription", "numberofaccount"]
views.py
def dashboard(request):
profile_data = Profile.objects.get(user=request.user)
profile_form = ProfileForm(request.POST or None, instance=profile_data)
if profile_form.is_valid():
print("worked")
profile_form.save()
context = {
'profile_form': profile_form
}
return render(request, "main/dashboard.html", context)
Solution
I made it work by adding this line of code inside my form
subscription = forms.CharField(disabled=True)
forms.py
class ProfileForm(forms.ModelForm):
subscription = forms.CharField(disabled=True)
class Meta:
model = Profile
labels = {
"telegramusername": "Telegram Username",
"subscription": "Subscription Plan",
"numberofaccount": "Number of MT5 Account"
}
fields = ["telegramusername", "subscription", "numberofaccount"]
Answered By - tiberhockey
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.