Django删除记录中的多个模型

2024-06-30 07:37:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个问题想知道你能不能帮我。在

我有一个table,我展示了三个不同的模型,这是正常的。在

我的问题是当我想删除该记录时,正如你所知道的,我必须指定我选择哪个模型,以便删除它。我以前用三个不同的tables为每个模型创建一个表,但是现在当我为三个模型创建一个表时,我不知道如何做。在

我一直在尝试不同的方法,但都没用。在

我得到的是:

在视图.py在

def eliminar_activos(request, id):
    opc = activo_opc.objects.get(id=id) #first model
    odbc = activo_odbc.objects.get(id=id) #second model
    eip = activo_eip.objects.get(id=id)# third model
    delete = chain(opc,odbc ,eip )
    delete.delete()
    messages.success(request, "Success!")
    return redirect('activo')

在网址.py在

^{pr2}$

模板:

<td><a href="{% url 'eliminar_activos' item.id %}"> Eliminar </a> </td>

注:

只适用于第一个模型,不适用于其他模型。在

如果我试着用另外两种型号,我会发现这个错误:

activo_opc matching query does not exist.

有没有一种不需要三张桌子就可以做到的方法? 谢谢!


Tags: 方法py模型idgetmodelobjectsrequest
1条回答
网友
1楼 · 发布于 2024-06-30 07:37:10

奇怪的是,你从3个不同的模型中移除了基于同一个给定id的行,这是有意的吗?在

你应该把你的三个模型联系起来。 对其他模特来说可能是一个单独的场地。在

检查这个:https://docs.djangoproject.com/en/1.10/topics/db/examples/one_to_one/

然后,您可以配置oneToOneField,这样当您删除行时,它也会删除关系的其他对象:

class Place(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)

    def __str__(self):              # __unicode__ on Python 2
        return "%s the place" % self.name

class Restaurant(models.Model):
    place = models.OneToOneField(
        Place,
        on_delete=models.CASCADE, # deleting a place will delete the associated restaurant
        primary_key=True,
    )
    serves_hot_dogs = models.BooleanField(default=False)
    serves_pizza = models.BooleanField(default=False)

    def __str__(self):              # __unicode__ on Python 2
        return "%s the restaurant" % self.place.name

相关问题 更多 >