这是我的模型:
class Exam(BaseModel):
...
STATE_CHOICES = (
(PASS, PASS),
(FAILED, FAILED),
(GREAT, GREAT),
state = models.CharField(max_length=15, choices=STATE_CHOICES, default=PASS)
...
def save(self, *args, **kwargs):
request = kwargs.get('request', None)
print(f'user {request.user} saved the model')
super().save(*args, **kwargs)
...
这是我的管理模型,我覆盖了 save_model 方法以将请求传递给我的模型:
@admin.register(Exam)
class ExamModelAdmin(admin.ModelAdmin):
...
fields = ('state',)
list_display = ('state',)
form = ExamForm
...
def save_model(self, request, obj, form, change):
obj.save(request=request)
但是我得到一个错误:
save() got an unexpected keyword argument 'request'
Django = 3.2
最佳答案
这将需要覆盖/修改模型的 save()
方法,例如:
class Exam(models.Model):
...
def save(self, *args, **kwargs):
request = kwargs.pop('request', None)
# print(f'user {request.user} saved the model')
...
super().save(*args, **kwargs)
关于python - 如何将请求/用户传递给 Django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73462281/