【发布时间】:2022-06-17 13:39:39
【问题描述】:
当我从 django admin 将 is_active 更改为 False 时,我正在使用 django 4.0,它不会对对象进行任何更改,我已经覆盖了模型中的保存方法
models.py
class Topic(CreatedModel, DatedModel):
name = models.CharField(
max_length=255,
unique=True,
null=False,
)
slug = models.SlugField(
max_length=255,
unique=True,
help_text="A unique field used for creating Topics in Kafka"
)
category = models.CharField(
max_length=255,
blank=True,
choices=CATEGORY,
help_text="Default for constant value updates"
)
selected_model = models.CharField(
max_length=255,
choices=ALERT_MODELS,
unique=True,
help_text="The Model for sending updates to Kafka"
)
is_active = models.BooleanField(
default=True
)
def save(self, *args, **kwargs):
if self.pk is None:
print("New object topic")
topic_name = self.slug
invoke_kafka_topic_create.delay(topic_name)
super().save(*args, **kwargs)
def __str__(self):
return self.slug
admin.py
class TopicManager(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if getattr(obj, 'created_by', None) is None:
obj.created_by = request.user
obj.save()
else:
obj.modified_by = request.user
obj.save()
谁能给点建议?当我在models.py 中添加save() 时问题就开始了
【问题讨论】:
-
你应该保存表单,而不是对象。
标签: python django django-models django-forms