我有一个以 DateTime 作为主键定义的类
class GrowEntry(models.Model):
dateTime = models.DateTimeField(primary_key=True, unique=True, null=False, blank=False)
airTemperature = models.FloatField(null=True, blank=True)
airHumidity = models.FloatField(null=True, blank=True)
def __str__(self):
return "time {datetime}T:{airtemp}H:{airHumidity}".format(datetime = self.dateTime, airtemp = self.airTemperature, airHumidity = self.airHumidity)
def get_absolute_url(self):
return reverse('growentry_edit', kwargs={'pk': self.pk})
def get_formatted_id(self):
return self.dateTime.strftime("%Y-%m-%d %H:%M:%S")
它可以工作,但在管理员中我注意到我无法删除条目,因为默认方法(或操作,无论它是什么)尝试使用 DateTime 字段作为长日期格式的参数。为了解决这个问题,我以这种方式覆盖了管理员
@admin.action(description='Delete entry')
def delete_model(modeladmin, request, queryset):
if not modeladmin.has_delete_permission(request):
raise PermissionDenied
for obj in queryset:
obj.delete()
class GrowEntryAdmin(admin.ModelAdmin):
list_display = ['dateTime', 'airTemperature', 'airHumidity']
ordering = ['dateTime']
actions = [delete_model]
但现在我在列表中有两个操作(默认一个和我的自定义)。我想我错过了一些东西。对此有一些指导方针吗?如何摆脱默认操作?