Python 如何在django中自动填充字段并使其只读?

Python 如何在django中自动填充字段并使其只读?,python,django,readonly,autofill,Python,Django,Readonly,Autofill,我刚到django,我在做一个知识测试 在这里和网上发现了很多重复的东西,但没有什么有用的 我试图创建一个ForeignKey字段,该字段由于用户填充的其他字段而被填充,并使其对用户不可更改 我认为我应该使用重写save()方法,但我根本无法理解这一点 我该怎么做自动填充和只读的事情呢?你的方法是正确的。重写save方法,如果self.pk不是None,则在字段发生更改时引发异常。您可以使用django模型UTIL轻松跟踪模型中的更改: 原则: class MyModel(models.Mode

我刚到django,我在做一个知识测试

在这里和网上发现了很多重复的东西,但没有什么有用的

我试图创建一个
ForeignKey
字段,该字段由于用户填充的其他字段而被填充,并使其对用户不可更改

我认为我应该使用重写
save()
方法,但我根本无法理解这一点


我该怎么做自动填充和只读的事情呢?

你的方法是正确的。重写save方法,如果self.pk不是None,则在字段发生更改时引发异常。您可以使用django模型UTIL轻松跟踪模型中的更改:

原则:

class MyModel(models.Model):
    #....
    some_field = models.Foreignkey(...)
    tracker = FieldTracker()

    def save(*args, **kwargs):
        if self.pk is None:
            # new object is being created
            self.some_field = SomeForeignKeyObject
        else:
            if self.tracker.has_changed("some_field"):
                raise Exception("Change is not allowed")
        super().save(*args, **kwargs)

添加默认值=?and editable=字段为False,并尝试读取文档