我有我的 django 模型Customer
,它由这些字段组成;
'Customer_ID'、'姓名'、'性别'、'年龄', '国籍', '地址','帐户类型','薪水','平衡','Employer_Stability','客户忠诚度','居留身份'和“服务级别”
其中Service_Level
=或. Silver
_Gold
Platinum
我已经设法创建了一个自定义管理操作来仅更新 Service_Level 而没有任何条件,如下所示;
def allocate_service(ModelAdmin, request, queryset):
queryset.update(Service_Level=2)
@admin.register(models.Customer)
class CustomerAdmin(admin.ModelAdmin):
icon = '<i class="material-icons">account_box</i>'
list_display = ('Customer_ID', 'Name', 'Gender', 'Nationality',
'Account_Type', 'Salary', 'Balance', 'Service_Level')
list_per_page = 10
list_filter = ('Nationality', 'Gender')
actions = [allocate_service ]
我想添加一个操作,根据上面粗体特征的值(年龄、薪水等)将 Service_Level 分配给一个客户/客户。例如,Age > 25 and Salary >= 800 and Account_Type == Savings
何时Service_Level = Platinum
。
我的模型如下:
class Service(models.Model):
#service_no = models.CharField(primary_key=True, max_length=4)
service_name = models.CharField(primary_key=True, max_length=40)
service_description = models.TextField(default='')
class Meta:
db_table = 'services'
ordering = ['service_name']
def __str__(self):
return self.service_name
# Customer Model: too big so I ommited the other fields here
class Customer(models.Model):
Service_Level = models.ForeignKey(Service, on_delete=models.CASCADE,
db_column='service_name', null=True, blank=True)
我删除了在 Service_Level 上使用 int 键的选项
我不确定我应该如何去做。帮助将不胜感激