I like to use a form in a function based view but I like to override the kategoria
select field to show only the objects that related to the user.
models.py
class Blog_poszt(models.Model):
def __str__(self):
return str(self.user)
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="blog_szerzo")
datetime = models.DateTimeField(auto_now_add=True, auto_now=False)
cim = models.CharField(max_length=300)
cim_slug = models.CharField(max_length=300, null=True, blank=True)
szoveg = models.CharField(max_length=10000, null=True, blank=True)
kategoria = models.ForeignKey('Blog_kategoriak', on_delete=models.CASCADE, null=True, blank=True)
kep = models.FileField(upload_to="blog/", null=True, blank=True)
class Blog_kategoriak(models.Model):
def __str__(self):
return str(self.user)
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="kategoria_szerzo")
datetime = models.DateTimeField(auto_now_add=True, auto_now=False)
kategoria = models.CharField(max_length=200)
forms.py
class UjBlogposztForm(forms.ModelForm):
class Meta:
model = Blog_poszt
fields = '__all__'
exclude = ('user',)
views.py
def blog_poszt(request):
form = UjBlogposztForm(request.POST, request.FILES)
if request.method == 'POST':
if form.is_valid:
form.instance.user = request.user
form.save()
context = {
'form': form,
}
html
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-dark">Mentés</button>
</form>
You can:
def blog_poszt(request):
...
form = UjBlogposztForm()
form.fields["kategoria"].queryset = Blog_kategoriak.objects.filter(user=request.user)
context = {"form": form}
....