我使用Django admin.TabularInline类在Foreinkey关系中添加多个对象,如下所示:

Admin.py:

class HeadFlowDatasetInline(admin.TabularInline):
    model = HeadFlowDataset
    extra = 0

class ProductAdmin(admin.ModelAdmin):
    list_display = (
        ...
    )
    search_fields = (
        ...
    )
    fields = (
        ...
    )
    inlines = [HeadFlowDatasetInline]

    def save_model(self, request, obj, form, change):
        obj.created_by = request.user
        obj.last_updated_by = request.user
        obj.save()

    def save_formset(self, request, form, formset, change):
        instances = formset.save(commit=False)
        for instance in instances:
            instance.user = request.user
            instance.save()

以下是我的ProductHeadFlowDataset型号:

class Product(models.Model):
    id = models.UUIDField(
        primary_key=True,
        default=uuid.uuid4,
        editable=False,
    )
    main_model = models.ForeignKey(
        MainModel,
        on_delete=models.SET_NULL,
        null=True,
        verbose_name="نام مدل اصلی پمپ",
    )
    usage = models.ManyToManyField(Usage)
    sub_usage = models.ManyToManyField(SubUsage)
    pump_type = models.ForeignKey(
        PumpType,
        on_delete=models.SET_NULL,
        null=True,
        verbose_name="تیپ پمپ",
    )
    pump_name = models.CharField(
        max_length=255,
        null=False,
        blank=False,
        verbose_name="نام محصول",
        unique=True,
    )
    ... # other fields not related to this question.
    
    def __str__(self):
        return self.pump_name


class HeadFlowDataset(models.Model):
    id = models.UUIDField(
        primary_key=True,
        default=uuid.uuid4,
        editable=False,
    )
    product = models.ForeignKey(
        Product,
        on_delete=models.CASCADE,
    )
    head = models.FloatField()
    flow = models.FloatField()

    def __str__(self):
        return self.product.pump_name

And for this purpose, this approach is working just fine. But the problem occurs when I'm trying to remove a HeadFlowDataset object from the add product object page. As shown in the picture below, there is a checkbox item in front of each HeadFlowDataset object, but checking it and saving does not work. I could not find any other way to make this work neither. Can anyone show me a way to do this? enter image description here

推荐答案

由于您将commit设置为False,因此默认情况下不会运行删除和保存等操作.如果您具有删除权限,则可以使用formset.deleted_objects迭代和删除它们

Django相关问答推荐

使用序列化器获取Django ORM auth_user. id数据

Django动态页面.为什么我的代码不工作?

Django测试:如何模拟Django_apps.get_Model()的LookupError

Urls.py中路径**kwargs的Django翻译?

Django 中模型将数据存储在哪里?

Django中的InvalidOperation错误[]

为什么 timezone.now 在作为默认值应用于 Django 中的 DateField 时显示future 日期

在 django HTML 邮箱模板中使用字体

Django `UniqueConstraint` 异常处理方式与 'unique=True' 相同

Django:通过manage.py使用服务器和gunicorn等其他服务器之间的区别.哪个更好?

Django REST 异常

Django populate() 不可重入

Django - 如何从模型中 Select 特定列?

Django:获取上次用户访问日期

如何动态检索 Django 模型类?

无效的块标签: static

在 Django shell 启动时自动导入模型

如何使用或使用 Django 的模型过滤系统?

Django/Python初学者:执行python manage.py syncdb时出错-找不到psycopg2

Django 1.7 迁移不会重新创建删除的表,为什么?