微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django3:如何设置与内联管理员正确配合使用的 OneToOneField?

如何解决Django3:如何设置与内联管理员正确配合使用的 OneToOneField?

我想创建一个管道实例并一起创建相应的输入文件。我的模型有这样的结构。

class Pipeline(models.Model):
    input_file = models.OnetoOneField(
                   'InputFile',on_delete=models.CASCADE,null=False,parent_link=True
                 )


class InputFile(models.Model):
   pipeline = models.OnetoOneField(
                  'Pipeline',parent_link=False
              )

我尝试了 parent_link=True/False 的不同组合,但没有任何效果。但是,仅当我在创建两个实例的所有位置都设置 parent_link=True 时,才不可能再次删除它们。

我的 admin.py 看起来像:

class InputFileAdmin(admin.StackedInline):
    model = InputFile

class PipelineAdmin(admin.ModelAdmin):
    inlines = [Inputfile]

admin.site.register(Pipeline,PipelineAdmin)

无论是哪种组合,在创建或删除过程中我总是会出错。

解决方法

我的问题是 on_delete 参数。删除时,框架现在没有先删除什么。

现在可以使用了:

class Pipeline(models.Model):
    input_file = models.OneToOneField(
                   'InputFile',on_delete=models.SET_DEFAULT,null=True,default='',parent_link=True
                 )


class InputFile(models.Model):
   pipeline = models.OneToOneField(
                  'Pipeline',on_delete=models.CASCADE,parent_link=False
              )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。