【问题标题】:Make a relation 3 django models and add filter建立关系 3 django 模型并添加过滤器
【发布时间】:2017-11-06 16:18:08
【问题描述】:

如何建立关系 3 django 模型?

我希望能够进行 mysql 查询,但就像我使用 django 一样,我想关联 3 个模型,另外我想通过用户 ID 添加过滤器

SQL 查询

SELECT * FROM hospetaje 
inner join usuario on (Usuario_idUsuario=idUsuario)
inner join pago on (idHospetaje=Hospetaje_idHospetaje)
where idUsuario = 5

我的模特是

class Usuario(models.Model):
  idusuario = models.AutoField(db_column='idUsuario', primary_key=True)  
  cc = models.CharField(unique=True, max_length=45)
  nombre = models.CharField(max_length=15)
  apellido = models.CharField(max_length=20)
  fecha_nacimiento = models.DateField()
  sexo = models.CharField(max_length=6)
  e_mail = models.CharField(db_column='e-mail', max_length=30)
  telefono = models.CharField(max_length=10)
  usuario = models.CharField(max_length=30)
  contrasena = models.CharField(max_length=10)
 tipousuario_idtipousuario = models.ForeignKey(Tipousuario, models.DO_NOTHING, db_column='TipoUsuario_idTipoUsuario')

class Pago(models.Model):
  idpago = models.AutoField(db_column='idPago', primary_key=True)  
  fechapago = models.DateTimeField(db_column='fechaPago') 
  fechapagada = models.DateField(db_column='fechaPagada') 
  valor = models.FloatField()
  hospetaje_idhospetaje = models.ForeignKey(Hospetaje, models.DO_NOTHING, db_column='Hospetaje_idHospetaje')  

class Hospetaje(models.Model):
  idhospetaje = models.AutoField(db_column='idHospetaje', primary_key=True) 
  usuario_idusuario = models.ForeignKey('Usuario', models.DO_NOTHING, db_column='Usuario_idUsuario')  
  habitacion_idhabitacion = models.ForeignKey(Habitacion, models.DO_NOTHING, db_column='Habitacion_idHabitacion') 
  fechainicio = models.DateField(db_column='fechaInicio')  
  fechafinal = models.DateField(db_column='fechaFinal', blank=True, null=True)

【问题讨论】:

  • 请更新模型的格式,目前有点难以阅读。
  • 你能不能re-write the question 让它问一个的事情,这样有一个正确的答案?

标签: python mysql django model relation


【解决方案1】:

您已经通过定义ForeignKey 字段在模型之间创建了“关系”。

您可以通过这种方式访问​​相关模型:

pago = Pago.objects.first()
pago.hospetaje_idhospetaje

Django 文档有一些很好的examples on how to access Many-to-One relationships

【讨论】:

    猜你喜欢
    • 2017-06-22
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2016-01-24
    相关资源
    最近更新 更多