【问题标题】:django .update() a foreign keydjango .update() 一个外键
【发布时间】:2021-08-31 03:45:15
【问题描述】:

我在更新 fk 时遇到问题。

Views.py

estandares = 
EstandarProducto.objects.select_related('recinto','producto','proveedor').prefetch_related
(Prefetch('carreras')).filter(recinto=id_recinto)


for proveedor in estandares:
    if proveedor.proveedor_id == None or proveedor == "":
                
    EstandarProducto.objects.filter(id=proveedor.id).update(proveedor_id=1)
    x=EstandarProducto.objects.get(id=proveedor.id)
    print("ID proveedor : ", x.proveedor.id )

Models.py

class EstandarProducto(models.Model):
    ''''''
    costo_unitario_uf = models.DecimalField(max_digits=20, decimal_places=5, default=0)
    cantidad = models.IntegerField(default=0)
    total_uf = models.DecimalField(max_digits=20, decimal_places=5, default=0)
    recinto = models.ForeignKey(Recinto, related_name='estandares_producto', on_delete=models.CASCADE)
    producto = models.ForeignKey(
        Producto, related_name='estandares_producto', on_delete=models.PROTECT)
    proveedor = models.ForeignKey(
        Proveedor, related_name='estandares_producto', on_delete=models.CASCADE, blank=True, null=True)
    carreras = models.ManyToManyField(Carrera, related_name="estandares_productos", blank=True)

class Proveedor(models.Model):
    '''Datos de contacto de un proveedor de cotizaciones o de estandar.'''
    nombre = models.CharField(max_length=500)
    direccion = models.CharField(max_length=1000, blank=True, null=True)
    correo = models.EmailField(blank=True, null=True)
    telefono = models.CharField(max_length=12, blank=True, null=True)

    def __str__(self):
        return f"{self.nombre} - {self.direccion}"

问题是按预期打印返回 1,但是当我查看数据库时没有任何变化。

【问题讨论】:

  • 您说它反映在打印上,打印只是从数据库中获取值,因此您正在查看的数据库/表或您正在检查的记录不是正确的。我也试过了,效果很好。
  • 我知道它不起作用,因为我打印了 3 次,并且只有当我在 Proveedor.id 字段的 EstandarProducto 上获得空值时才会出现错误。

标签: python-3.x django django-models django-views


【解决方案1】:

好吧,我的错误是因为我没有更新 estandarProducto 实例,而我在我的 JSON 上使用了该实例。

【讨论】:

    猜你喜欢
    • 2018-08-17
    • 2014-03-20
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2015-05-10
    • 2011-10-03
    • 2017-10-20
    • 1970-01-01
    相关资源
    最近更新 更多