一 場景問題
繼續使用IDC Model,在此Model增加user字段,用於記錄添加當前數據的用戶:
class IDC(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, editable=False, null=True) # 記錄創建該數據的用戶
name = models.CharField(max_length=64)
contact = models.CharField(max_length=32)
phone = models.CharField(max_length=32)
address = models.CharField(max_length=128)
create_time = models.DateField(auto_now=True)
def __str__(self):
return self.name
class Meta:
verbose_name = "IDC機房"
verbose_name_plural = verbose_name
1
2
3
4
5
6
7
8
9
10
11
12
13
14
問題:如何在增加IDC數據的時候,獲取當前登錄的用戶信息,並保存到user字段里?
二 解決方法
打開IdcManager目錄的adminx.py,在IDCAdmin類里增加save_models方法,代碼如下:
@xadmin.sites.register(IDC)
class IDCAdmin(object):
list_display = ("user", "name", "contact", "phone", "address", "create_time")
list_display_links = ("name",)
def save_models(self):
self.new_obj.user = self.request.user
super().save_models()
1
2
3
4
5
6
7
8
三 總結
xadmin的文檔和資料比較少,這個問題雖然也就三行代碼的事情,但是我在百度是沒找到解決方案的。
最終是查看xadmin的代碼摸索解決的。
那么,應該查看哪部分代碼?考慮到這個操作是在保存數據的時候觸發的,那么就找xadmin處理保存操作(編輯界面)的代碼:
venv\Lib\site-packages\xadmin\views\edit.py
————————————————
版權聲明:本文為CSDN博主「yuhan963」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yuhan963/article/details/79187425