I have a CreateView view to which I am sending a parameter by url, my question is how can I take that parameter to save it in one of the fields of the model?
View:
class ReferenciarSimpatizanteCreateView(CreateView):
model = Referencia
template_name = 'referido/form/form.html'
form_class = ReferidoForm
page_title = 'Referenciar Simpatizantes'
def get_context_data(self, **kwargs):
context = super(ReferenciarSimpatizanteCreateView,self).get_context_data(**kwargs)
context['page_title'] = self.page_title
return context
def get_success_url(self):
return reverse('simpatizante.refer.list')
Form:
class ReferidoForm(forms.ModelForm):
error_css_class = 'error'
required_css_class = 'required'
label_suffix = ':'
class Meta:
model = Referencia
fields = ['referenciador']
widgets = {
'referenciador': forms.TextInput(),
}
Model: (the parameter I need to save it in the field referenced when the form is sent)
class Referencia(TimeStampedModel):
referenciador = models.ForeignKey(Simpatizante, related_name="referido_referenciador", on_delete=models.PROTECT)
referenciado = models.ForeignKey(Simpatizante, related_name="referido_referenciado", on_delete=models.PROTECT)
fecha = models.DateField()
creado_por = models.ForeignKey(User, null=True, blank=True, related_name='referido_creado_por', verbose_name=_('creado_por'), on_delete=models.PROTECT)
actualizado_por = models.ForeignKey(User, null=True, blank=True, related_name='referido_actualizado_por', verbose_name=_('actualizado_por'), on_delete=models.PROTECT)
class Meta:
verbose_name = _('referido')
verbose_name_plural = _('referidos')
unique_together = ("referenciador", "referenciado")
def clean(self, *args, **kwargs):
if not self.referenciador.es_lider:
raise ValidationError({'referenciador': ["Seleccione un lider",]})
if self.referenciador == self.referenciado:
raise ValidationError({'referenciado': ["No se puede refenciar el mismo lider ",]})
def save(self, *args, **kwargs):
import datetime
self.fecha = datetime.datetime.now()
return super(Referencia, self).save(*args, **kwargs)
URL:
url(r'^refer/(?P<pk>\d+)/$', login_required(views.ReferenciarSimpatizanteCreateView.as_view()), name="simpatizante.refer")