Я пытаюсь использовать ModelForm для добавления моих данных. Он работает хорошо, за исключением того, что раскрывающийся список ForeignKey показывает все значения, и я хочу, чтобы он отображал значения, которые уместны для зарегистрированного пользователя.Как фильтровать значения в форме Django 1.7 с помощью ModelForm?
Это мои модели:
class productos(models.Model):
user = models.ForeignKey(User)
secciones = models.ForeignKey(secciones)
name = models.CharField(max_length=50)
image = models.ImageField(upload_to = 'productos')
precio = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
descripcion = models.TextField(max_length=300, null=True,blank=True)
def save(self, *args, **kwargs):
if not self.id:
self.slug = slugify(self.name)
super(productos, self).save(*args, **kwargs)
def __unicode__(self):
return self.name
#####################################################################
class secciones(models.Model):
name = models.CharField(max_length=50)
user = models.ForeignKey(User)
def save(self, *args, **kwargs):
if not self.id:
self.slug = slugify(self.name)
super(secciones, self).save(*args, **kwargs)
def __unicode__(self):
return self.name
форма код:
class AgregarProducto(forms.ModelForm):
class Meta:
model = productos
И, наконец, код вид:
def agregar_producto(request):
if request.method == "POST":
modelform = AgregarProducto(request.POST,request.FILES,user=request.user)
print modelform
if modelform.is_valid():
modelform.save()
return redirect("/editar-perfil/")
else:
modelform = AgregarProducto()
return render(request, "home/AgregarProducto.html", {"form":modelform})
Как получить форму, чтобы отобразить только подмножество secciones, где secciones.user равно зарегистрированному пользователю?
Спасибо, но мне нужно, чтобы в шаблоне оставались только разделы входа пользователя, а не разделы всех пользователей, я был бы очень признателен, если вы можете мне помочь. –
вы можете использовать wrapper ['@ login_required'] (https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.decorators.login_required) или настраивать свою оболочку, чтобы потребовать пользователя должен войти в систему. –
a вы можете видеть в этой строке: 'Secciones.objects.filter (user = request.user)', это только фильтрация 'Secciones' для текущего посетителя/пользователя. см. мое обновление ... –