español - django tutorial
¿Cómo lleno automáticamente campos en django? (4)
Tu código puede verse así:
from django.contrib.auth.decorators import login_required
class QuestionForm(forms.ModelForm):
class Meta:
model = Question
@login_required
def ask(request):
form = QuestionForm(request.POST)
if form.is_valid():
question = form.save(False)
question.userid = request.user
question.save()
#...
Tengo una pregunta modelo con un campo llamado ID de usuario , antes de hacer una pregunta, uno necesita iniciar sesión, quiero guardar para capturar el ID de usuario del usuario actualmente conectado y asignarlo al ID de usuario del modelo de pregunta.
Tenga en cuenta que no se muestra el ID de usuario en mi formulario, es decir, en el modelo de Pregunta he declarado el ID de usuario de la siguiente manera;
Pregunta de clase (models.Model): ... userid = models.ForeignKey (User, editable = false) ...
¿Cómo asigno el ID de usuario registrado al ID de usuario del modelo de pregunta?
Una cosa a tener en cuenta es el hecho de que no puede acceder al objeto de solicitud (y, por lo tanto, al usuario actual) de sus modelos sin piratear las restricciones de diseño de django.
Por lo tanto, trucos ingeniosos como rellenar campos automáticamente como created_by y updated_by no funcionan desde Django. Debe establecer dichos campos manualmente en sus vistas como se ilustra en @Daevaorn.
Para un recurso más reciente, y probablemente actualizado, recomiendo la documentación oficial de Django. Este mismo ejemplo ha llegado a la sección de métodos de ModelAdmin de la documentación del administrador: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#modeladmin-methods
Si eres como yo, te sentirás tentado de tomar ese ejemplo y correr, pero podrías beneficiarte de reducir la velocidad, tomarte unos minutos para leer y luego implementar, sin duda habría ...
Tenga en cuenta que apunté a 1.6, pero en la esquina inferior derecha de la página hay un selector dinámico que le permite elegir su versión. (¡Estos impresionantes documentos son los que me están empujando a Django desde Rails!)