【问题标题】:Save Django Model Form and refresh after selecting a Foreign Key Object选择外键对象后保存 Django 模型表单并刷新
【发布时间】:2020-05-19 15:51:24
【问题描述】:

我有以下型号:

class Pic(models.Model):
    name = models.CharField(max_length=50)
    img = ImageField(upload_to='images/', default=None, null=True, blank=True)

class InputTest(models.Model):
    pic_id = models.ForeignKey(Pic, on_delete=models.CASCADE)
    image_field_crop = CropperImageField(upload_to='images/', default=None, null=True, blank=True)

添加新的 InputTest 对象时,管理员会从现有对象中选择一个 PicID 对象(外键)。我想要在选择它之后立即保存和刷新的对象。

例如:

  • 添加新的 InputTest 对象时,我选择 PIC#1 作为外键。程序将运行这个被覆盖的方法:

    def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
        super(InputTest, self).save(force_insert, force_update, using, update_fields)
        self.image_field_crop = self.pic_id.img
        super(InputTest, self).save(force_insert, force_update, using, update_fields)
    
  • 然后当页面刷新时,image_field_crop 会通过 PIC#1.img 自动完成,我可以在 CropperJS 中使用它(使用 CropperImageField)

可以这样做吗?添加新 InputTest 时选择 pic_id 后立即自动保存对象并刷新页面。

【问题讨论】:

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


    【解决方案1】:

    您好,您可以在 InputTest 模型中使用以下保存方法 在 InputTest admin 中选择 pic_id 并选择保存按钮 image_field_crop 后自动填充

    def save(self, *args, **kwargs):
            self.image_field_crop = self.pic_id.img
            super(InputTest, self).save(*args, **kwargs)
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 2016-09-03
      • 2015-06-21
      • 2012-12-26
      • 1970-01-01
      相关资源
      最近更新 更多