अल्टर Django फॉर्म
Aug 19 2020
मैं अपना कोड कैसे समायोजित कर सकता हूं ताकि एक उपयोगकर्ता किसी अन्य उपयोगकर्ता को नए पद के लिए न चुन सके। मैं इसे बनाना चाहता हूं ताकि उपयोगकर्ता में लॉग इन लेखक के रूप में स्वचालित रूप से जुड़ जाए।
मैंने केवल सामग्री क्षेत्र के लिए दृश्यमान में फ़ील्ड भाग सेट करने का प्रयास किया है, हालांकि यह काम नहीं करता है
मॉडल
class post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.CharField(max_length=140)
विचार
class CreatePostView(CreateView):
model = post
fields = '__all__'
template_name = 'users/create.html'
Myform। Html
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Login">
</form>
जवाब
1 bkrop Aug 18 2020 at 23:50
class CreatePostView(CreateView):
model = post
template_name = 'users/create.html'
fields = ['content']
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
MukheemMohammed Aug 18 2020 at 23:51
आप मैन्युअल रूप से का उपयोग कर उपयोगकर्ता मूल्य सम्मिलित कर सकते हैं request.user.username(या) पर एक नजर डालें इस । प्रश्नकर्ता का उत्तर सबसे नीचे स्थित है।
AbhishekBera Aug 19 2020 at 00:37
वहाँ 3 चीजें आप करने की जरूरत है:
- पृष्ठ को सुरक्षित रखें, ताकि अनाम उपयोगकर्ता इसका उपयोग करके, उसका उपयोग न कर सकें
LoginRequiredMixin - उपयोगकर्ता को खेतों से निकालें
form_validविधि का उपयोग करके फॉर्म पोस्ट किए जाने के बाद प्रस्तुत फॉर्म में वर्तमान उपयोगकर्ता दर्ज करें
from django.views.generic.edit import CreateView
from django.contrib.auth.mixins import LoginRequiredMixin
class CreatePostView(LoginRequiredMixin, CreateView):
model = Post
fields = ["content"]
template_name = "create.html"
def form_valid(self, form):
form.instance.user = self.request.user
return super().form_valid(form)